有没有办法使用Task 作为将来值T的等待句柄?
|
我想使用Task的方法返回值在以后变得可用时返回一个值,以便调用者可以使用Wait阻塞或附加一个延续,甚至等待它。我能想到的最好的是:
public class Future<T> {
private ManualResetEvent mre = new ManualResetEvent();
private T value;
public async Task<T> GetTask() {
mre.WaitOne();
return value;
}
public void Return(T value) {
this.value = value;
mre.Set();
}
}
这样做的主要问题是mre.WaitOne()正在阻塞,因此我假设每次对GetTask()的调用都会安排一个新线程进行阻塞。有没有一种方法可以以异步方式等待WaitHandle,或者已经有一个用于构建等效功能的助手?
编辑:好的,TaskCompletionSource是我正在寻找的东西吗,而我只是使自己的生活艰难?
没有找到相关结果
已邀请:
3 个回复
磐剩
正是我要的东西
距相镭
总体而言,我的卑鄙建议是查看代码并改为执行以下操作:
铰齐插
尽管您可能也可以等待myRealWork任务。我在您的代码中看不到实际计算值的位置。这可能需要类似: