2番目の非同期メソッドを呼び出すために最初の非同期呼び出しで結果を使用する必要がありますが、メソッド2を終了する前にWeb APIが空の結果を返します。asp web apiで2番目の非同期呼び出しで非同期結果を待つ方法
私は.ContinueWithを使用しようと試みてきたが、それがデッドロック
に表示されますと、誰かが解決策のいくつかの種類に私をリードしてもらえますか?
例:
public class AsyncApiController : ApiController
{
[ActionName("GetClientBySSN")]
public async Task<IHttpActionResult> GetClientBySSN(string ssn)
{
return Ok(await _repository.GetClientBySSN(ssn));
}
}
public interface IResRepository
{
Task<ClientResponse> GetClientBySSN(string ssn);
}
public class ResRepository : IResRepository
{
public Task<ClientResponse> GetClientBySSN(string ssn)
{
//async method
Task task1 = _service.GetClientNumberBySSN(ssn);
int clientNumber = task1.Result.clientnumber;
if (clientNumber != null)
{
//another async method that uses ID from the first result
return _service.GetClientDetailsByClientNumber(clientNumber);
}
else
{
return null;
}
}
}
'int型clientNumber =(のawaitタスク1).clientnumber文脈自由な状況に落ちるように見える(偽).ConfigureAwait;'。あなたがそれを待つことができるときに 'Task.Result'を使ってタスクをブロックしないでください。 – user3185569