SilverLight KeyDown处理程序中的AccessViolationException

时间:2010-11-19 17:01:40

标签: c# silverlight

在KeyDown事件中,我有:

if (e.Key == Key.Delete)
{
    if (HtmlPage.Window.Confirm("r u sure?"))
    {
        //Do stuff....
    }
}

我收到此错误“ 尝试读取或写入受保护的内存。这通常表明其他内存已损坏。“@ Confirm?

编辑:下面显示的解决方法和抛出错误的行是.Window.Confirm

Dispatcher.BeginInvoke(() =>
    {
        if (e.Key == Key.Delete)
        {
            if (HtmlPage.Window.Confirm("r u sure?"))
            {
                //Do stuff....
            }
        }
    });

任何人都知道快速解决方案。

1 个答案:

答案 0 :(得分:1)

试试这个......

if (e.Key == Key.Delete)
{
    Dispatcher.BeginInvoke(() =>
    {
        if (HtmlPage.Window.Confirm("r u sure?"))
        {
            //Do stuff....
        }
    }
}

关于MSDN的非常好的解释。这通常表示当BackgroundWorker线程被旋转,然后尝试访问UIElement时,例如Button,那时你也会获得AccessViolationException