Я хочу, чтобы мой код был оптимизирован, а также безопасный асинхронный поток в C #.У меня есть код, который в настоящее время достаточно избыточен, чтобы использовать дважды Task.WhenAll, я планирую использовать только один и убедиться, что задача является поточно-ориентированной и параллельной.
Это моя текущая реализация, которую я считаю лучшейНа мой взгляд, на данный момент любой человек может предложить более оптимизированную версию.
var tasks = new List<Task>();
// check for null reference for the items
if (results != null && results.items != null)
{
// multithreaded might not be supported by the post request
// changed to single thread for loop
for(var i = 0; i < results.items.Count; i++) {
var request = new PostAutoActionExecRequestJson()
{
ActionID = model.A_ID,
Changes = new List<object>(),
History = new HistoryJson()
{
Comment = model.Comment,
DatastoreID = results.items[i].d_id,
ItemID = results.items[i].i_id
},
RevNo = results.items[i].rev_no,
};
tasks.Add(services.PostAutoActionExecAsync<ExpandoObject>(request, token));
}
tasks.Add(CalculateNextExecution(model));
await Task.WhenAll(tasks);
}
Вставленный код должен выполняться асинхронно и завершать задачу одновременно.
Пожалуйста, дайте мне знать, пожалуйста.