0

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からの2番目の呼び出しが無視され、実行されないように見えることです。私のコードの何が問題になっていますか?ところで、AwesomiumSharpのバージョンはV1.6.6です。

4

1 に答える 1

0

私にはほとんど問題ないようです。

Idはこのようにします:

 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());
    }

それはあなたがしていることでうまくいくはずです。関数を2回実行してもよろしいですか?alert( "blabla"); message.client( "test"、 "test2")を実行し、少し待ってから実行するとどうなるかを確認します。

私がAwesomiumコールバックシステムを使用した限り、それはうまく機能します

于 2012-07-28T04:55:30.430 に答える