0

我有一个获取 xml 的 web 请求。效果很好,但是当我的应用程序请求服务器时按 F12(锁定屏幕)...我得到了一个 WebException。
我使用 taskCompeltionSource 对象...
这是我的代码

public async Task<String> Query(DataRequestParam dataRequestParam)
        {

            _dataRequestParam = dataRequestParam;

            try
            {
                Result = "";
                Result = await myDownloadString(dataRequestParam);

            }

            catch (WebException we)//ERROR IS CAUGHT HERE
            {
                throw new WebException(we.Message);

            }
            catch (Exception ex)
            {
                throw new MyException(ex.Message);

            }

            return Result;
        }

        public static Task<string> myDownloadString(DataRequestParam dataRequestParam)
        {
            var tcs = new TaskCompletionSource<string>();
            var web = new WebClient();

            if (!string.IsNullOrEmpty(dataRequestParam.AuthentificationLogin))
            {
                System.Net.NetworkCredential account = new NetworkCredential(dataRequestParam.AuthentificationLogin, dataRequestParam.AuthentificationPassword);
                web.Credentials = account;
            }

                web.DownloadStringCompleted += (s, e) =>
                {
                    if (e.Error != null) tcs.TrySetException(e.Error);
                    else if (e.Cancelled) tcs.TrySetCanceled();
                    else tcs.TrySetResult(e.Result);
                };

                web.DownloadStringAsync(dataRequestParam.TargetUri);
                return tcs.Task;

        }
4

1 回答 1

0

如果您没有禁用 ApplisationIdleDetection,您的进程会在进入锁定屏幕时停止 - 因此您可能会遇到异常 - 就像我在评论中所说的那样。禁用将解决此问题,但您必须注意以下几点:

  • 在点击开始按钮(或其他情况下将您的应用程序置于休眠状态)时,您仍然会遇到异常。在这种情况下,您的应用程序会停止,并且无法阻止这种行为。
  • 禁用 App Idle Detection 时必须满足认证要求 - 第 6.3 点
  • 如果您想在后台下载文件(锁定屏幕,关闭/离开应用程序后),那么您可以考虑后台传输
于 2014-03-03T13:25:23.330 回答