Awesomium忽视了异步调用

时间:2012-07-28 04:42:10

标签: c# javascript asynchronous awesomium

在Awesomium-sharp中,我写了这样的C#代码:

WebControl webControl = new WebControl();
webControl.CreateObject("external");
SetObjectCallback("external", "JSCallback", OnJSCallback);


private int count = 0;

    private void OnJSCallback(object sender, JSCallbackEventArgs e)
    {
        Console.WriteLine("hi");
        MessageBox.Show("hi");

        if (count == 0)
        {
            Thread worker = new Thread(func =>
                {
                    Thread.Sleep(3000);
                    OnReturn();
                });
            worker.Start();
        }
        if (count == 1)
        {
            Thread worker = new Thread(func =>
            {
                Thread.Sleep(5000);
                OnReturn();
            });
            worker.Start();
        }
        count++;
    }

    private void OnReturn()
    {
            webControl.Dispatcher.BeginInvoke((ThreadStart) delegate()
            {
                webControl.CallJavascriptFunction("", "CallFromNative", new JSValue[] {new JSValue("hello")});
            });
    }

和javascript代码是这样的:

external.JSCallback("hello ", "world");
external.JSCallback("wtf ", "dude");

奇怪的问题是来自Javascript的第二次调用似乎是直接的 从未执行过 我的代码出了什么问题?和顺便说一句,AwesomiumSharp的版本是V1.6.6

1 个答案:

答案 0 :(得分:0)

对我来说似乎很好。

我这样做是这样的:

 webView.Callback += new EventHandler<CallbackEventArgs>(webView_Callback);

    webView.CreateObject("client");
    webView.SetObjectCallback("client", "message");

    void webView_Callback(object sender, CallbackEventArgs e)
    {
        if (e.CallbackName == "message")
            System.Windows.Forms.MessageBox.Show(e.Args[0].ToString());
    }

你应该做得很好。你确定你第二次执行功能吗?警报( “布拉布拉”); message.client(“test”,“test2”),看看如果稍等一会然后再做就会发生什么。

到目前为止,我已经使用了Awesomium回调系统,它运行良好