我在Silverlight页面上捕获了一个关键组合新闻事件。现在在事件处理程序中我想显示一个提示框,它将用户输入和存储到字符串变量中。 我输入了这段代码:
string input = System.Windows.Browser.HtmlPage.Window.Invoke("prompt", new string[] { "QUICK SEARCH", "ENTER YOUR SEARCH ITEM.." }) as string;
但是当我运行它时,它向我显示AccessViolation错误的运行时错误未处理说:“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。” 任何解决方案??
答案 0 :(得分:0)
通过大量搜索,我发现Silverlight applcation是一个单线程活动。 在上面的语句中,我试图调用另一个线程。 我不得不使用Dispatcher来解决这个问题。 这就是代码的用法..
this.Dispatcher.BeginInvoke(() => javaScriptpopup(sender1, e1));
然后在javaScriptPopup中,我调用了我的字符串input = System.Windows.Browser.HtmlPage.Window.Invoke(“prompt”,new string [] {“QUICK SEARCH”,“输入你的搜索项目..”} )作为字符串;言。
这里sender1和e1是Object和Keyeventargs类型!!