首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法,该方法同步接受Action参数

方法,该方法同步接受Action参数
EN

Stack Overflow用户
提问于 2014-12-05 17:04:37
回答 1查看 43关注 0票数 1

我正在使用一个没有源代码的库,因此我不能用异步关键字来修饰它,并且可以做一些事情,比如await a Task (至少我不知道怎么做)。它公开了一个返回对象(我将称之为“应答”)的方法,并接受一个整数,以及一个Action类型的参数,我在其中检索这个答案。在我的代码继续之前,我如何等待得到填充的答案?

代码语言:javascript
复制
Object answer = null;
remoteLibrary.remoteMethod(42, x => 
{
  answer = x.Value; //This might take a few seconds
});
//I want to do something here with "answer" AFTER it has been populated
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 17:08:43

您需要一个同步结构。因为这需要几秒钟的时间,所以使用同步(阻塞)是浪费的,所以我建议使用像TaskCompletionSource这样的异步的

代码语言:javascript
复制
var tcs = new TaskCompletionSource<object>();
remoteLibrary.remoteMethod(42, x => 
{
    tcs.SetResult(x.Value);
});

var answer = await tcs.Task;
// use answer

TaskCompletionSource公开了一个直到调用SetResult (或SetCanceledSetException)才能完成的任务。当它完成时,您将得到在SetResult中设置的结果,因此不再需要虚拟变量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27321073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档