首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TaskCompletionSource异步返回

TaskCompletionSource异步返回
EN

Stack Overflow用户
提问于 2015-06-18 14:14:19
回答 1查看 422关注 0票数 0

我有以下课程:

代码语言:javascript
复制
public class Npc
{
    private string _text = "";

    private TaskCompletionSource<bool> tcs;

    public void AddText(string text)
    {
        this._text += text;
    }

    public void SendOk()
    {
        MessageBox.Show(this._text, "", MessageBoxButtons.OK);

        this._text = "";
    }

    public bool SendYesNo()
    {
        tcs = new TaskCompletionSource<bool>();

        MessageBox.Show(this._text, "", MessageBoxButtons.YesNo);

        this._text = "";

        return tcs.Task.Result;
    }

    public void SetResult(bool result)
    {
        tcs.TrySetResult(result);
    }
}

我希望方法SendYesNo只在使用SetResult方法设置tcs.Result值之后才返回它( SetResult方法将从代码的另一部分中调用)。

但是,当我执行SendYesNo时,我的程序只挂起(等待结果)。有什么方法可以让SendYesNo变成灰龙,这样我就可以设置结果了吗?

注意:我知道,使方法异步并调用关键字将使其成为异步。但是,我不能仅仅因为JavaScript脚本中使用这些方法而调用await关键字。

EN

回答 1

Stack Overflow用户

发布于 2015-06-18 14:42:29

只有在不等待结果到达的情况下,SendYesNo才有可能返回。它必须返回Task<bool>。如果您由于某些JavaScript问题而无法使其工作,那么您已经丢失了。

也许您可以让SendYesNo接受在任务完成时调用的回调( Action)。

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

https://stackoverflow.com/questions/30917844

复制
相关文章

相似问题

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