Являются ли исключения потокобезопасными? - PullRequest
0 голосов
/ 26 июня 2018

Интересно, что произойдет, если я поймаю исключение и передам его другим потокам.

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 после создания исключения, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...