スレッド内にスレッドがあり、最後のサブスレッドがハングして、20 時間何もスローしません。私のコードは次のようなものでした:
bool end = false;
var t1 = new Thread(() =>
{
// ...
var t2 = new Thread(() =>
{
try
{
foreach(Data data in datas2)
{
foreach(SubData subdata in data.SubDatas)
{
var t3 = new Thread(() =>
{
this.SaveData(subdata.RetrieveData());
}); t3.Start();
if (!t3.Join(1800000))
{
t3.Abort();
throw new TimeoutException("The execution of method is taking too long.");
}
}
}
} catch { throw; }
finally { end = true; }
}); t2.Start();
}); t1.Start();
finally
のブロックを通過するt2
ことはなく、エラーもスローされません。ここで何が起きてるの?
私のコードは C#、フレームワーク 4、Visual Studio 2010 Pro でビルドされています。
助けてください。前もって感謝します。
編集:
ご協力いただきありがとうございます。私は答えを見つけました、そしてそれはです
無限ループ。
このばかげたバグのために、私たちの生産は 1 週間停止しました。うーん。私たちのシステムには、一部のデータのみに対して無限ループを作成する検証があるようです。この質問の解決に熱心に取り組んでくれてありがとう。