小编SiS*_*arp的帖子

我的代码真的是异步执行的吗?

我在列表中有几个对象。每分钟,对于他们每个人,我都必须下载api信息并将接收到的数据保存到数据库中。

列表中的对象彼此独立。每个对象的方法可以单独调用。根据 api 的响应时间,单个方法的总执行时间通常为 ~0.5 到 5 秒。

按照 stackoverflow 上其他线程中的建议,我创建了以下代码:

private async void DownloadAndSaveDataForMyObjects(object state)
{
   try
   {
      await Task.Run(() => Parallel.ForEach(MyObjectsList, ServiceSingleObjectMethod));
   }
}


private void ServiceSingleObjectMethod(RehDeviceSmsRequest myObjectFromList)
{
   var apiInfo = GetInfoFromApi(myObjectFromList);
   SaveInfoToDatabase(myObjectFromList);
}
Run Code Online (Sandbox Code Playgroud)

在我看来,代码是异步的。但是……我有些怀疑。Logger 通知我应用程序运行期间执行的操作。对象的方法调用之间的间隔非常大。请看这个:

[13:32:46 DBG][MyService]->MyMethod => Update object id: 54
[13:32:47 DBG][MyService]->MyMethod => Update object id: 9
[13:32:50 DBG][MyService]->MyMethod => Update object id: 47
[13:32:51 DBG][MyService]->MyMethod => Update object id: 21
[13:32:51 DBG][MyService]->MyMethod => Update object id: 53
[13:32:53 DBG][MyService]->MyMethod => Update object id: …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous parallel.foreach

0
推荐指数
1
解决办法
89
查看次数

标签 统计

asynchronous ×1

c# ×1

parallel.foreach ×1