考虑以下伪代码:
线程#1
var task = new Task<int>();
this.AwaitingTask = task;
return await task;
线程#2
this.AwaitingTask.Complete(16);
这样,#2
线程将传递返回值(int)并通知Task已完成。所以#1
线程会知道继续执行。
是否可以实施?如何?我正在寻找能以类似方式工作的最接近的想法。
答案 0 :(得分:8)
您不必实施它。它已经附带名称
TaskCompletionSource<T>
主题1
var completionSource = new TaskCompletionSource<int>();
this.CompletionSource= completionSource;
return await completionSource.Task;
主题2
this.CompletionSource.SetResult(16);