如果由ScheduledAgent触发,则GetStringAsync出错,但在WP8 App使用期间没有错误

时间:2013-08-14 13:25:19

标签: asynchronous windows-phone-8 webclient

我有一个webclient的包装器,我用它来检索一些数据。 WP8应用程序正在使用相同的功能,WP8 ScheduledAgent也使用此功能。

不知何故,当WP8应用程序使用该函数时,没有错误并且它正确返回。 但是,当ScheduledAgent使用该函数时,它会在下面的粗体代码中出错。我尝试了尝试捕捉,但它没有抓住。通过调试器,GetSTringAsync(uri)已经完成,没有任何异常。错误似乎只发生在将返回任务分配给结果字符串时。

我收到的错误是: System.Windows.ni.dll中出现未处理的“System.UnauthorizedAccessException”类型异常


   public class HttpClient : WebClient
   ..
        private async Task GetStringAsync(string strUri)
        {
            Uri uri = new Uri(strUri);
            string result = string.Empty;
            try
            {
                result = await GetStringAsync(uri);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return result;
        }
...
        private Task GetStringAsync(Uri requestUri)
        {
            TaskCompletionSource tcs = new TaskCompletionSource();

            try
            {
                this.DownloadStringCompleted += (s, e) =>
                {
                    if (e.Error == null)
                    {
                        tcs.TrySetResult(e.Result);
                    }
                    else
                    {
                        tcs.TrySetException(e.Error);
                    }
                };

                this.DownloadStringAsync(requestUri);

            }
            catch (Exception ex)
            {
                tcs.TrySetException(ex);
            }

            if (tcs.Task.Exception != null)
            {
                throw tcs.Task.Exception;             
            }

            return tcs.Task;
        }


请告知我是否遗漏了某些东西。

1 个答案:

答案 0 :(得分:0)

我的问题是因为我在我的模型中使用图钉作为我的对象类型之一。显然,在预定的代理中,它无法访问该对象类型,从而引发了上述错误。