我在列表中有几个对象。每分钟,对于他们每个人,我都必须下载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)