我在IIS Windows Server 2016中运行的WCF服务中具有以下代码。
此代码是否真的异步运行?我问你,因为DoStep大约需要350毫秒,但是当我每分钟发送250个请求(每120 ms 1个请求时,我的服务似乎有很大的延迟。
此延迟(大多数通话大约30秒)是否正常?每个请求将打开19个任务。
服务器没什么特别的,只有4个CPU和64GB RAM
var aAsyncTasks = new Task[19];
AsyncResult = new AsyncDataClass[19];
//Start Process
for(aa=0;aa<18;aa++)
{
AsyncResult[aa] = new AsyncDataClass();
//Start Async Proccess
Func<Task> aAct = async () {
await DoStep( AsyncResult[aa]).ConfigureAwait(false);
};
var aCurrentTask = aAct();
aAsyncTasks[aa] = aCurrentTask;
}
//wait for all tasks
Task.WaitAll(aAsyncTasks);
//Manage all AsyncResults
..............
private async Task DoStep(out AsyncDataClass aResultData)
{
await Task.Run( () => {
// Do Job here. **It takes about 350 ms**
});
}