Самый простой способ в C# отложить выполнение задачи без контекста синхронизацииC#

Место общения программистов C#
Anonymous
Самый простой способ в C# отложить выполнение задачи без контекста синхронизации

Сообщение Anonymous »

Внутри асинхронного метода в C# мне нужно отложить выполнение (вернуть выполнение вызывающему объекту), а также очистить контекст синхронизации перед продолжением выполнения.
оператор await Task.Delay(1).ConfigureAwait(false); в начале метода сделает это, но со средним снижением производительности в 15 мс из-за задержки.
Лучший способ отложить и очистить контекст выполнения — проверить текущий контекст выполнения и вызвать Task.Yield (он сохраняет контекст выполнения, если таковой имеется) или Task.Delay(1).ConfigureAwait(false)< /code>:

Код: Выделить всё

public async Task Test()
{
if (SynchronizationContext.Current is null)
{
await Task.Yield();
}
else
{
await Task.Delay(1).ConfigureAwait(false);
}

// Deferred code
}
Знаете ли вы, есть ли более простой способ отложить выполнение текущей задачи (как это делает Task.Yield) и одновременно очистить контекст синхронизации?


Подробнее здесь: https://stackoverflow.com/questions/787 ... on-context

Вернуться в «C#»