以下代码有一个错误:result
不包含任何状态; IsCompleted
,IsCanceled
和IsFaulted
总是假的,但我测试Task
工作正常,哪里有问题?任务不返回IsCompleted状态
var result = _dataService.SyncPoll(webApiPoll);
if (result.IsCompleted)
{
_logger.Info("Execute sync, poll was completed");
poll.IsSynchronized = true;
poll.ServerStatus = ServerStatus.Active;
ctx.SaveChanges();
}
//////
public Task SyncPoll(PollDto poll)
{
if (!_isAuthorized)
{
return null;
}
var client = new ApiClient(_baseApiUrl, _authToken);
Task result = Task.Run(async() => await client.SyncPollWeb(poll));
return result;
}
///////
public async Task<HttpResponseMessage> SyncPollWeb(PollDto poll)
{
HttpResponseMessage resp;
//System.Diagnostics.Debugger.Launch();
using (var client = GetClient())
{
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(_authType, _accessToken);
resp = await client.PostAsJsonAsync<PollDto>("api/poll", poll);
}
return resp;
}
您在检查这些状态之前是否等待任务完成?从你的代码中,我看不到这些。当任务正在运行时,所有这三个状态当然都是“错误”的。 –
您需要等待结果返回的任务。它将*异步*完成,因此在您检查时几乎不会完成。 –