【发布时间】:2014-08-11 16:35:25
【问题描述】:
我正在尝试调用服务,该服务应该返回所有记录,但我收到 TaskCancelledException 并显示一条消息 A 任务已取消,然后结果为空。我知道有很多数据(尝试使用小数据并且工作正常)。我怎样才能让它继续工作(保持抓取记录)而不抛出“A Task was cancelled”。这是我的方法
public async Task<ActionResult<string>> ObtainData(string url, CancellationToken ct = default(CancellationToken))
{
Result<string> result = new Result<string>();
try
{
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
HttpResponseMessage response = await httpClient.SendAsync(request); //HttpClient
string jsonresult = await HandleReceipt(response, type);
result.Result = jsonresult;
}
catch (Exception ex)
{
result.Message = "Problem obtaining data.";
}
return result;
}
我看到有一个取消令牌正在传递,有没有办法处理取消?另外,这个方法是从这里调用的:
public async void GetJsonData()
{
string json = await ObtainData();
}
我希望它在不取消的情况下完成获取请求。
【问题讨论】:
-
请求是否需要时间才能完成?
-
是的,它可以很好地处理请求的小数据集。但不止于此,它给了我“任务已取消”
-
在完成此操作时,我还必须在视图中添加诸如“加载”之类的内容..但这就像它的第一部分。
-
您似乎没有使用 Cancellation 令牌,来自方法存根,我猜这是您未从 SendAsync 声明的另一个?显示异常的堆栈跟踪。
标签: c# wpf async-await