如何从另一个线程通知等待任务完成?

时间:2015-10-05 12:27:48

标签: c# multithreading async-await

考虑以下伪代码:

线程#1

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

线程#2

this.AwaitingTask.Complete(16);

这样,#2线程将传递返回值(int)并通知Task已完成。所以#1线程会知道继续执行。

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

1 个答案:

答案 0 :(得分:8)

您不必实施它。它已经附带名称 TaskCompletionSource<T>

主题1

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

主题2

this.CompletionSource.SetResult(16);