Llamada asíncrona ignorada por Awesomium

en Awesomium-sharp, escribí mi código C# así:

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

y el codigo javascript es asi:

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

El problema extraño es que la segunda llamada de Javascript parece ignorarse y nunca ejecutarse. ¿Qué pasa con mi código? y por cierto, la versión de AwesomiumSharp es V1.6.6

preguntado el 28 de julio de 12 a las 05:07

1 Respuestas

Me parece casi bien.

Sin embargo, lo haría así:

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

Debería funcionar bien lo que estás haciendo. ¿Estás seguro de que incluso estás ejecutando la función por segunda vez? alerta("blabla"); message.client("test", "test2"), y vea qué sucede si espera un poco y luego lo hace.

Hasta donde he usado el sistema de devolución de llamada Awesomium, funciona muy bien

Respondido 28 Jul 12, 05:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.