异常是线程安全的吗?

时间:2018-06-26 11:04:01

标签: c# .net multithreading exception-handling thread-safety

我想知道如果我捕获一个异常并将其传递给其他线程会发生什么情况。

try
{
  //...
}
catch (Exception e)
{
  for (int i = 0; i < 100; i++)
  {
    int currIndex = i;
    Task.Run(() => e.Data[currIndex] = currIndex);
  }

  throw;
}

鉴于这些其他线程会更改异常的Data属性的内容(该属性具有内部字典,请参见Reference Source),Data词典会损坏吗?

查看Exception的源代码会发现此字典不是线程安全的。

如果我的怀疑是真实的,后果是什么?我认为您永远不要在引发异常后更改Data属性的内容,对吧?

0 个答案:

没有答案