CPa*_*Pay 3 c# asp.net-web-api
试着写一个API,我有一个奇怪的案例,我试图解决如下:
if (!request.WillCheckGetLater)
{
// Client calling is willing to wait only for certain amount of time
var clientWillingToWaitFor = GetResponseTime(request);
var needsToUpdateResponse = await AwaitResponse(heldBidRequest, clientWillingToWaitFor);
SendMessage(...);
return needsToUpdateResponse;
}
else
{
SendMessage(...);
return false;
}
Run Code Online (Sandbox Code Playgroud)
在我的Post方法中,我正在尝试等待该方法.基本上当我收到帖子时,我构建一个"简短"答案,客户端使用API中的GET方法检查"长"答案,但也可以在POST中直接询问长答案,但必须指定如何他愿意等待那么长的答案,否则我默认为"简短"答案......
我的SendMessage方法基本上是第三方通信系统,我订阅和发布消息.
现在,当线
var needsToUpdateResponse = await AwaitResponse(heldBidRequest, clientWillingToWaitFor);
Run Code Online (Sandbox Code Playgroud)
执行,它阻止这段代码,SendMessage直到任务结束才执行,理想情况下我宁愿在返回时阻止它.
我没有必要想要调用SendMessage First只是因为奇怪的情况我可以得到消息的响应在我设置等待它之前.
关于我可以用来做什么的任何想法?
是
实际上,您已经在等待"变量"(实际上是返回值).您无法等待方法,只能等待任务.只是,而不是存储关闭的任务T和await它,当你准备:
var needsToUpdateResponse = AwaitResponse(heldBidRequest, clientWillingToWaitFor);
SendMessage(...);
return await needsToUpdateResponse;
Run Code Online (Sandbox Code Playgroud)
如果我们不使用它会更明显var:
Task<T> needsToUpdateResponse = AwaitResponse(heldBidRequest, clientWillingToWaitFor);
SendMessage(...);
return await needsToUpdateResponse;
Run Code Online (Sandbox Code Playgroud)