Windows 8.1同步执行

本文关键字:执行 同步 Windows | 更新日期: 2023-09-27 18:21:55

我必须将代码迁移到Windows 8.1。问题是,当我引入本机调用时,8.1使javascript(而不是WinJs)异步。一个示例场景。

f1(){
window.external.notify();(call to native c# code which calls f2 using Invokescript)
}
f2(){
//do stuff
}
 f3(){
//do stuff
 }
f1();
f3();

执行顺序是f1、f3,然后是f2。f3不等待本机调用。我需要纠正这个问题。有什么建议吗。

Windows 8.1同步执行

我认为没有办法在Javascript中等待调用结束,所以我建议使用某种回调机制。基本上,只调用f1,并将参数中要执行的下一个函数的名称传递给您的通知调用:

f1(){
window.external.notify("f3");
}
f2(){
//do stuff
}
 f3(){
//do stuff
 }
f1();

然后,在ScriptNotify事件中,检索要执行的函数的名称,并在完成时使用InvokeScript执行它:

void wb_ScriptNotify(object sender, NotifyEventArgs e)
{
     // Do whatever you need
     // ...
     // Resume execution of Javascript code
     wb.InvokeScript(e.Value, null);
}