我有以下课程:
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关键字。
发布于 2015-06-18 14:42:29
只有在不等待结果到达的情况下,SendYesNo才有可能返回。它必须返回Task<bool>。如果您由于某些JavaScript问题而无法使其工作,那么您已经丢失了。
也许您可以让SendYesNo接受在任务完成时调用的回调( Action)。
https://stackoverflow.com/questions/30917844
复制相似问题