Windows 8.1同步执行

时间:2014-09-15 06:18:55

标签: c# .net windows-phone-8.1

我必须将我的代码迁移到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不等待本机通话。我需要纠正这个问题。请提出任何建议。

1 个答案:

答案 0 :(得分:0)

我认为没有办法在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);
}