问题描述
我是不熟悉基于Web的C#编程和异步WebMethod调用的人。我读过几篇文章,但找不到任何有效的方法。
如果我有100个Web服务方法调用,而我想同时异步调用10个方法,该怎么办。等待每个WebMethod响应5000毫秒,如果响应没有在5000毫秒内到达,则提供超时,并且基于这10次调用的信号量释放,我将从其余WebMethod中调用新方法。
实现这种情况的最佳方法是什么?
样本: 我只显示了1个示例方法,但是这种方式我必须异步调用100多个方法。
SemaphoreSlim Semaphore = new SemaphoreSlim(0,10);
//Register method
soapClient.MethodNameCompleted += soapClient_MethodNameCompleted;
//Call method async
MethodNameAsync();
Semaphore.Wait()
//This method calls only when WebMethod send a response
void soapClient_MethodNameCompleted(object sender,MethodNameCompletedEventArgs e)
{
string result = e.Result.ToString();
Semaphore.Release();
}
解决方法
可能是中间件可以帮助您。例如:
newDirectory.then(function(result){
return getAllFiles('/TestDir').then((result) => {
...
});
}).then(() => {
console.log('doing some other task');
});
ASP.NET核心中间件https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1