以下代碼有一個錯誤: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;
}
您在檢查這些狀態之前是否等待任務完成?從你的代碼中,我看不到這些。當任務正在運行時,所有這三個狀態當然都是「錯誤」的。 –
您需要等待結果返回的任務。它將*異步*完成,因此在您檢查時幾乎不會完成。 –