0

一部のデータを取得するために使用している webclient のラッパーがあります。これと同じ機能が WP8 アプリで使用されており、WP8 ScheduledAgent でも使用されています。

なんとなくWP8アプリで関数を使うとエラーが出ずにちゃんと返ってきます。ただし、ScheduledAgent が関数を使用すると、以下の太字のコードでエラーが発生しました。try catch を試みましたが、キャッチしません。Debugger 経由で、GetSTRingAsync(uri) は例外なく完了しました。エラーは、戻りタスクを結果文字列に割り当てているときにのみ発生しているようです。

受け取ったエラー: System.Windows.ni.dll で「System.UnauthorizedAccessException」タイプの未処理の例外が発生しました


   パブリック クラス HttpClient : WebClient
   ..
        プライベート非同期タスク GetStringAsync(string strUri)
        {
            Uri uri = 新しい Uri(strUri);
            文字列の結果 = string.Empty;
            試す
            {
                結果 = await GetStringAsync(uri);
            }
            キャッチ(例外例)
            {
                MessageBox.Show(ex.Message);
            }
            結果を返します。
        }
...
        private Task GetStringAsync(Uri requestUri)
        {
            TaskCompletionSource tcs = new TaskCompletionSource();

            試す
            {
                this.DownloadStringCompleted += (s, e) =>
                {
                    if (e.Error == null)
                    {
                        tcs.TrySetResult(e.Result);
                    }
                    そうしないと
                    {
                        tcs.TrySetException(e.Error);
                    }
                };

                this.DownloadStringAsync(requestUri);

            }
            キャッチ(例外例)
            {
                tcs.TrySetException(例);
            }

            if (tcs.Task.Exception != null)
            {
                tcs.Task.Exception をスローします。             
            }

            tcs.Task を返します。
        }


何か不足している場合はお知らせください。

4

1 に答える 1