У меня есть этот код на WinForm:Могу ли я «заблокировать» функцию до окончания асинхронного потока?
private void buttonStart_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => ThreadFunction())
.ContinueWith(t => ThreadFunctionComplete()
, CancellationToken.None
, TaskContinuationOptions.None
, TaskScheduler.FromCurrentSynchronizationContext());
ThreadFinished();
}
, и я хотел бы начать ThreadFinished()
только тогда, когда ThreadFunctionComplete()
была закончена. Ну, я мог бы положить ThreadFinished()
в конце ThreadFunctionComplete()
, но для некоторого рабочего процесса этого не произойдет. Является ли это возможным? Может быть, вид ожидания/блокировки?
Почему вы не можете использовать 'ContinueWith()' снова, с 'ThreadFinished()' на этот раз? –
Какую версию C# вы используете? –
Почему бы вам просто не поставить очередь в конце задачи, как вы делали с «ThreadFunctionComplete»? – Dirk