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不等待本机调用。我需要纠正这个问题。有什么建议吗。
我认为没有办法在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);
}