我正在为我正在开发的游戏服务器开发脚本界面。我正在使用MessageBoxes模仿NPC聊天。这是我的剧本:
var a = test("hey");
if (a == true) {
send("yes");
} else {
send("no");
}
这是我的代码:
private TaskCompletionSource<bool> result = new TaskCompletionSource<bool>();
private void Form1_Load(object sender, EventArgs e)
{
var contents = File.ReadAllText(@"C:\test.js");
var engine = new Engine();
engine.SetValue("test", new Func<string, Task<bool>>(Test));
engine.SetValue("send", new Action<string>(Send));
//new Thread(new ThreadStart(() => engine.Execute(contents))).Start();
engine.Execute(contents);
}
private async Task<bool> Test(string text)
{
await Task.Factory.StartNew(() =>
{
var a = MessageBox.Show(text, "", MessageBoxButtons.YesNo);
if (a == DialogResult.Yes)
{
result.TrySetResult(true);
} else
{
result.TrySetResult(false);
}
});
return result.Task.Result;
}
private void Send(string text)
{
MessageBox.Show(text);
}
现在,当我执行程序时它会显示MessageBox,但是在设置结果后没有任何反应,脚本不会继续。有谁知道为什么?它应该显示&#34; yes&#34;或&#34;不&#34; MessageBox但它没有。
也许我做错了什么或是否有更好的方法来停止&#34;脚本直到输入?
编辑:好的,我知道了 - 我必须打电话等待测试所以它会等待。但是,我无法从Javascript文件中调用await关键字。我该如何解决这个问题?