Jint - 在给出输入之前暂停脚本

时间:2016-06-24 11:09:22

标签: c# jint

我正在为我正在开发的游戏服务器开发脚本界面。我正在使用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关键字。我该如何解决这个问题?

0 个答案:

没有答案