我正在尝试编写一个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;
}
在我的Post方法中,我正在尝试等待该方法。基本上当我收到一个post时,我构造一个“短”答案,客户端使用API的GET方法检查“长”答案,但也可以直接在POST中请求长答案,但必须指定他愿意等待多久才能得到长答案,否则我会默认返回“短”答案...
我的SendMessage方法基本上是第三方通讯系统,我在其中订阅和发布消息。
现在,在这一行:
var needsToUpdateResponse = await AwaitResponse(heldBidRequest, clientWillingToWaitFor);
当执行此代码时,它会阻塞并等待任务完成,直到SendMessage执行完毕。理想情况下,我希望它在返回时被阻塞。
我不想仅仅因为可能出现消息响应在等待设置之前就到来的奇怪情况而首先调用SendMessage。
你有什么好的想法可以解决这个问题吗?