開発のヒホ

iOSとかAndroidとかのアプリを開発するのに四苦八苦するブログ

型'System.UnauthorizedAccessException'の初回例外が~~~で発生しました

 WindowsPhoneアプリ開発をしていると、よくこんなエラーに出会います。

型 'System.UnauthorizedAccessException' の初回例外が Microsoft.Phone.Interop.ni.dll で発生しました
型 'System.UnauthorizedAccessException' の例外が Microsoft.Phone.Interop.ni.dll で発生しましたが、ユーザー コード内ではハンドルされませんでした

 これだけではなんのこっちゃわかりませんが、大抵の場合はメインスレッド以外でUI操作をしようとしているためです。
 例えば非同期ダウンロードしたあとのコールバック関数内でUI操作をしようとしたときにこの例外が投げられます。

// in background
void CallbackFunc() {
    UrlBox.Text = "texttext"; // ERROR!
}

 バックグラウンドスレッドでUI操作をしてはいけないらしいので、メインスレッドからUI操作するようにします。

// in background
void CallbackFunc() {
    Dispatcher.BeginInvoke(() =>
    {
        UrlBox.Text = "texttext"; // OK!
    });
}