2012-07-28 56 views
0

在Awesomium锐忽略异步调用,我写我的C#代码:通过Awesomium

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

回答

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回调systemm,它很好地工作