2012-07-28 53 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,它很好地工作