Есть два метода, которые вместе должны выполняться параллельно, это связано с ограничением по времени. Например, следующий фрагмент данных будет обрабатываться каждые 100 мс.
List<Widget> widgetList = new List<Widget>()
{
file list with 100 widget objects
}
List<Task> tasks = new List<Task>();
foreach (Widget widget in widgetList)
{
Task t = Task.Run(async () =>
{
var result = await widget.Analyze(newData);
ReportResults(result);
});
tasks.Add(t);
}
Task.WaitAll(tasks.ToArray());
Нет, это не полный пример кода, но должно быть достаточно для ответа на следующий вопрос:
Могу ли я быть уверен, что ReportResults (результат) будет выполняться до завершения для каждой Задачи или возможно, что если Задача завершается и вызывает ReportResults (результат), а затем завершается другая задача, она может вызвать ReportResults (результат), что приводит к непредсказуемому поведению?
ТИА,
Дуг