Однажды, когда я использовал фрагмент cw в асинхронном методе, Visual Studio использовала await Console.Out.WriteLineAsync(); вместо исходного Console.WriteLine();. Сегодня я обновил Visual Studio до 17.10 и заметил, что эта функция удалена.
Я хотел бы спросить, есть ли разница между этими двумя методами? Или какой из них лучше (кроме производительности) использовать в асинхронных методах?
По комментариям @PanagiotisKanavos, если в коде используется большое количество задач, Console.Out.WriteLineAsync (); иногда работает быстрее, но в большинстве случаев производительность обоих практически одинакова.
[Benchmark]
public async ValueTask Benchmark1()
{
await Parallel.ForAsync(0, 50, async (i, ct) =>
{
await Console.Out.WriteLineAsync(LONGTEXT);
await Job();
await Console.Out.WriteLineAsync("short_text");
});
}
[Benchmark]
public async ValueTask Benchmark2()
{
await Parallel.ForAsync(0, 50, async (i, ct) =>
{
Console.WriteLine(LONGTEXT);
await Job();
Console.WriteLine("short_text");
});
}
public async static ValueTask Job()
{
for (int i = 0; i < 12950; i++)
await Task.Yield();
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... elineasync