1

Windows Phone 8用のアプリをコーディングしようとしています。例外が発生した場合は、画面に例外を出力したいと思います。これが私がしていることです:

try
            {
               //The code which I want to handle for exception
            }
            catch (Exception e)
            {
                ErrorStatus.Text = e.Message + "\n\n" + e.Source + "\n\n" + e.StackTrace;
            }

ErrorStatus私のTextBlockはどこにありますか。ただし、catchブロックの唯一の行は、実行時に例外が発生することです。例外は次のとおりです。

A first chance exception of type 'System.UnauthorizedAccessException' occurred in System.Windows.ni.dll An exception of type 'System.UnauthorizedAccessException' occurred in System.Windows.ni.dll and wasn't handled before a managed/native boundary

構文的に何か間違ったことをしていますか?私はC#プログラミングとWindowsPhoneプログラミングに不慣れです。

編集:

例外の詳細:

System.UnauthorizedAccessException was unhandled by user code
HResult=-2147024891
Message=Invalid cross-thread access.
Source=System.Windows
InnerException: 
4

2 に答える 2

3

UI スレッドからメッセージを表示する必要があります。Web 呼び出しは常にバックグラウンド ワーカー スレッドでコールバックします。そのため、Dispatcher を呼び出して、これを UI スレッドで実行する必要があります。

Exception.ToString()また、メッセージの内容を文字列として表示するために使用することもできます。これには、処理中の例外内にネストされた例外も表示されるという利点があります。

一時的な手段として、次のことを試してください。

catch (Exception e)
{
    Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
        ErrorStatus.Text = e.ToString();
    }
}

より恒久的には、問題を修正するか、ファイルに記録して、コードのバグを隠している例外をキャッチしないようにする必要があります。

于 2013-03-09T08:33:17.967 に答える
0

これは、問題がどこにあるかを知ることができるように、例外メッセージを出力する最良の方法です。

try{}
catch(Exception ex)
{
    await new MessageDialog("Error message:\n\n" + ex.message).ShowAsync();
}
于 2016-01-16T07:00:01.250 に答える