水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 2004年のえび日記 > 2004年1月 > 2004年1月2日(金曜日)

2004年1月2日(金曜日)

続・鳩丸高速化計画その9・泥沼化

System.Threading.ThreadAbortException はローカルでは全く再現せず、完全に泥沼化。

NameObjectCollectionBase クラスの説明には以下のように書かれているので……

コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。

HatomaruDataHolder の内容が他のスレッドによって変更されると System.Threading.ThreadAbortException がスローされるのかなぁと思ったりするわけですが、列挙処理してないし……。試しに BaseGet() を呼ぶときにロックしてみたりしましたが、再現しない (というか、おそらく同時アクセスが必要なのでなかなか再現できない) のでこれで良いのかどうか何とも判断しがたく。

関連する話題: C# / プログラミング / えび日記 / hatomaru.dll / 鳩丸高速化計画

最近の日記

関わった本など