WP8应用程序如何处理从另一个线程上的Webbrowser.InvokeScript抛出的异常?

时间:2014-08-29 08:12:24

标签: multithreading exception windows-phone-8 try-catch

我正在尝试在我的WP8应用程序中加入AdMob广告,并注意到一定比例的广告(通常是基于文本的广告但不总是)引发以下异常:

A first chance exception of type 'System.SystemException' occurred in Microsoft.Phone.Interop.ni.dll

我做了很多挖掘,发现有些admob插页式广告在尝试使用InvokeScript(下面的堆栈跟踪)时遇到了问题。

Microsoft.Phone.Interop.ni.dll!Microsoft.Phone.Controls.NativeMethods.ValidateHResult(int hr)
Microsoft.Phone.Interop.ni.dll!Microsoft.Phone.Controls.WebBrowserInterop.InvokeScript(string scriptName, string[] args)
Microsoft.Phone.ni.dll!Microsoft.Phone.Controls.WebBrowser.InvokeScript(string scriptName, string[] args)
GoogleAds.DLL!A.c778af7b26605e0bb7fadf1547d7f5530.c379e3fb7ee502b62de5eee847f1352a2(string c1966769b4ad56530475a20642e40c06c)

据推测,这是因为一些广告并不是很好(只是一个猜测),但我想知道在抛出异常时是否有任何方式让我抓住(没有任何运气)至今)。 Admob调用正在使用beginInvoke,因此它们不在同一个线程上,因此下面的典型模式不会导致断点被命中。我已经确定了“查看异常跨越AppDomain或本机/托管边界时中断”的visual studio选项。

在App()

UnhandledException += Application_UnhandledException;

处理程序方法:

private void Application_UnhandledException(object sender,     ApplicationUnhandledExceptionEventArgs e)
{
    if (System.Diagnostics.Debugger.IsAttached)
    {
        // An unhandled exception has occurred; break into the debugger
        System.Diagnostics.Debugger.Break();
    }
}

有什么方法可以捕捉这些例外吗?

1 个答案:

答案 0 :(得分:0)

我找到了这个问题的解决方案,它让我有一个异常处理程序,即使在不同的线程上也会被调用。

http://www.markermetro.com/2013/01/technical/handling-unhandled-exceptions-with-asyncawait-on-windows-8-and-windows-phone-8/