このようなwhileループを使用するのは悪い習慣ですか? ストップウォッチを使用する方が良いでしょうか、あるいはこの解決策にいくつかの落とし穴がありますか?C#タイムアウトを実装する
public void DoWork()
{
//do some preparation
DateTime startTime = DateTime.Now;
int rowsCount = 0;
int finalCount = getFinalCount();
do
{
Thread.Sleep(1000);
rowsCount = getRowsCount(); // gets rows count from database, rows are added by external app.
} while (rowsCount < finalCount && DateTime.Now - startTime < TimeSpan.FromMinutes(10));
}
私はこの記事Implement C# Generic Timeout、 を見ましたが、簡単なシナリオで使用するにはあまりにも複雑である - あなたは、スレッドの同期を考える必要があり、それはそうでそれらを中止したりないとすることが適当です。
何が正確にタイムアウトを作成してやりたいのですか?あなたがあなたの全体の風景を伝えるなら、おそらく我々は使用するために異なる方法を提供することができます。 –
関連/複製:http://stackoverflow.com/questions/3195030/thread-timeout-in-c – RQDQ
作業をやめて10分以上実行すると、作業を開始してから一定時間後に作業を停止する必要があります。メソッドを呼び出すスレッドをブロックすることができます。 – anderhil