2015-10-05 190 views
0

考虑以下伪代码:如何从另一个线程通知等待任务完成?

主题#1

var task = new Task<int>(); 
this.AwaitingTask = task; 
return await task; 

主题#2

this.AwaitingTask.Complete(16); 

这样,#2线程会通过返回值(int)和通知任务已完成。所以#1线程会知道继续执行。

是否可以实现?如何?我正在寻找能够以相似方式工作的最接近的想法。

回答

7

您不必执行它。它已经随名 TaskCompletionSource<T>

线程1个

var completionSource = new TaskCompletionSource<int>(); 
this.CompletionSource= completionSource; 
return await completionSource.Task; 

线程2

this.CompletionSource.SetResult(16); 
+0

哇,我几乎猜到了。 – stil