这段代码真的是异步的吗?

时间:2018-06-24 17:57:51

标签: c# asynchronous async-await task

我在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**
   });
}

0 个答案:

没有答案