2015-10-05 110 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