C# Windows Phone。ReadToEndAsync()的结果因应用程序停用而损坏

C# Windows Phone。ReadToEndAsync()的结果因应用程序停用而损坏,c#,async-await,windows-phone,streamreader,C#,Async Await,Windows Phone,Streamreader,我在使用StreamReader.ReadToEndAsync()时遇到一些问题。 //some get response code ... using (var response = getResponseTask.Result) { using (var responseStream = response.GetResponseStream()) { using (var responseStreamReader = new StreamReader(responseStre

我在使用StreamReader.ReadToEndAsync()时遇到一些问题。

//some get response code ...
using (var response = getResponseTask.Result)
{
  using (var responseStream = response.GetResponseStream())
  {
    using (var responseStreamReader = new StreamReader(responseStream))
    {
     var readToEndTask = responseStreamReader.ReadToEndAsync();
     var responseResult = await readToEndTask;
     //and some json parse code here
    }
  }
}
所以,当我在ReadToEndAsync任务进行过程中按下设备上的Home按钮(无论是手机还是模拟器)时,结果字符串在应用程序重新激活时不是完整长度。。。i、 它的结尾没有任何例外或警告

因此,我无法将json数据解析为对象

我如何修复或避免这种情况


提前谢谢大家

为此,您需要将代码作为后台任务运行。即使您的应用被停用,后台任务也将运行。您可以参考:了解背景任务。
有两种类型的后台任务,进程中和进程外。

谢谢,我来试试。但StreamReader的这种行为是否正常且众所周知?或者是坏了还是怎么的?因为在重新激活后,
readToEndTask
对象的RanToCompletion状态为空异常属性,就像没有发生任何错误一样。。。我的意思是,真的每个人都通过在他们的项目中集成后台任务来解决这个问题吗?他妈的奇怪。对我来说这并不奇怪,这是操作系统的行为。操作系统不允许你连续运行任务,即使你的应用程序在后台。这是为了避免不必要地使用电源、内存和其他资源。所以一般来说,你的应用程序在后台不会运行任务。虽然操作系统允许你在后台执行任务,这对你的应用程序来说是非常必要的。有了一些限制并提供了一些配置,您可以在后台运行任务来解决您的问题。