Интересно, что произойдет, если я поймаю исключение и передам его другим потокам.
try
{
//...
}
catch (Exception e)
{
for (int i = 0; i < 100; i++)
{
int currIndex = i;
Task.Run(() => e.Data[currIndex] = currIndex);
}
throw;
}
Если эти другие потоки изменят содержимое свойства Data
исключения (которое содержит внутренний словарь, см. Источник ссылки ), будет ли поврежден словарь Data
?
Просмотр исходного кода Exception
показывает, что этот словарь не является потокобезопасным.
Если мои подозрения верны, каковы последствия? Я думаю, что вы никогда не должны изменять содержимое свойства Data
после создания исключения, верно?