私は、T1と呼ばれるメインスレッドをしました:このメソッドUpdateResult
というメソッドを実行スレッドが再帰的に実行されているかどうかを確認しますか?
Thread t1 => new Thread(UpdateResults);
は、インターネット接続が必要です。今や接続が壊れることがあります。
接続が切断されると、メソッドUpdateResult
が例外を返し、スレッドt1
が実行を終了します。
私は再びスレッドt1
を実行する必要があるので、私もスレッドt1
が実行中かNOである場合、再帰的にチェックしていない別のスレッドt2
を作成します。
両方のスレッドが自動的に開始されます。これは、スレッドt2
メソッドのコードです:
while (true)
{
if (!t1.IsAlive)
{
t1.Start();
}
}
このコードunfortuntelyアプリのUIを遅く、「原因は無限ループです。 これを修正するために私が代わりにできることは何ですか?代わりにちょうどt1
を見るために別のスレッドt2
を無駄に、あなたがスレッドt1
の方法を変更することを検討して
'try..catch'ブロックで' UpdateResults'をラップしますか? – BlackBear
@BlackBearはすでにtry catchブロックに入っていますが、例外がスローされた場合、スレッドは実行を終了します – AgainMe
スレッドではなく、再試行/接続を 'updateresults'してもいいと思います。スレッドは、作業が完了したかどうかを知るテスターではなく、作業が完了した場所でなければなりません。 –