Пример простого кода:
Код |
---|
async void test()
{
var t1 = System.Threading.Tasks.Task.Run(() => someWork());
var t2 = System.Threading.Tasks.Task.Run(() => someWork());
var i1 = await t1;
var i2 = await t2;
MessageBox.Show($"i1 = {i1}; i2 = {i2}");
}
Int32 someWork()
{
Int32 count = 0;
var ext = ExtApp.Application.General;
foreach (var para in ext.Parameters(-1L, CatalogOptions.Recursive)) {
count++;
}
return count;
} |
К коду придираться не надо по поводу обработки исключения и т.д. это просто пример.
Запускается две задачи параллельно и vogbit падает. Теперь при попытке открыть любую форму (например номенклатура) или закрытия главного окна приложения ловится ошибка:
Цитата |
---|
Сообщение: Адресат вызова создал исключение.
Исключение: System.Reflection.TargetInvocationException
Источник: mscorlib
Версия 1.1.37841 сборка 171
Внутреннее исключение:: Адресат вызова создал исключение. |
При этом если задачи запускать последовательно, то все ок.