Поделиться через


Task.Yield Метод

Определение

Создает поддерживающий ожидание объект задачи, который асинхронным образом выдает возврат текущему контексту, когда его ожидают.

public:
 static System::Runtime::CompilerServices::YieldAwaitable Yield();
public static System.Runtime.CompilerServices.YieldAwaitable Yield ();
static member Yield : unit -> System.Runtime.CompilerServices.YieldAwaitable
Public Shared Function Yield () As YieldAwaitable

Возвращаемое значение

Контекст, который при ожидании будет асинхронно переходить назад в текущий контекст во время ожидания. Если текущий SynchronizationContext отличен от null, он также обрабатывается как текущий контекст. В противном случае планировщик задач, связанный с задачей, выполняющейся в данный момент, рассматривается как текущий контекст.

Комментарии

Вы можете использовать await Task.Yield(); в асинхронном методе, чтобы принудительно завершить его асинхронно. Если имеется текущий контекст синхронизации (SynchronizationContext объект ), оставшаяся часть выполнения метода будет возвращена в этот контекст. Однако контекст будет решать, как приоритизировать эту работу относительно других работ, которые могут находиться в состоянии ожидания. Контекст синхронизации, который присутствует в потоке пользовательского интерфейса в большинстве сред пользовательского интерфейса, часто имеет приоритет для работы, размещенной в контексте, выше, чем входные и отрисовки. По этой причине не следует полагаться на await Task.Yield(); то, чтобы пользовательский интерфейс реагировал. Дополнительные сведения см. в записи Полезные абстракции, включенные с continueWith в блоге Параллельное программирование с помощью .NET.

Применяется к