3

我正在用 Visual Studio 做一个通用 Windows 平台应用程序,我遇到了一个非常奇怪的问题。它是 Windows 运行时组件上的后台任务。如果删除有问题的代码部分,后台任务将毫无问题地执行。

当到达代码时,第一句 ( WebRequest request = WebRequest.Create(_finalURI);) 被执行但WebResponse response = await request.GetResponseAsync();立即停止后台任务,无一例外,没有任何东西。很奇怪。

     WebRequest request = WebRequest.Create(_finalURI);
     WebResponse response = await request.GetResponseAsync(); // Here it closes
     Stream dataStream = response.GetResponseStream();
     StreamReader reader = new StreamReader(dataStream);
     textResponse = reader.ReadToEnd();

这对我来说是非常罕见的情况。我上传了一个视频到 YouTube,这样你就可以看到它。我已经经历了两个多小时:(并继续努力。

编辑:

我已经更改为班级HttpClient,并且行为相同。

var httpClient = new HttpClient();
textResponse = await httpClient.GetStringAsync(_finalURI); // Here it closes
httpClient.Dispose();

编辑2:

根据 Scott Chamberlain 的要求,方法签名:

public async Task<ArticleList> GetArticleList(ArticleAttributes attributes,
ImageResFromAPI imageres, string singleArticle)
4

1 回答 1

1

我有同样的问题。应用程序无任何异常关闭。即使在AppDomain.CurrentDomain.UnhandledException

它很奇怪,但await request.GetResponseAsync();如果你使用,而不是使用,

var webResponseTask = request.GetResponseAsync();

await Task.WhenAll(webResponseTask);

if (webResponseTask.IsFaulted)
  throw webResponseTask.Exception;

using (var webResponse = webResponseTask.Result)
{
}

你可以绕过这个问题。

于 2018-06-03T00:16:33.320 回答