6

ASP.NET 4.0 Webページで、実行時間が長すぎるコードを検出して防止したいと思います。だから私はこのような構造を探しています:

try for 1000 ms
{
    RunPotentiallyTooLongCode();
}
catch
{
    RecordError( "code ran out of control" );
    // let user know
    ...
}

現在4.0を使用していますが、4.5のソリューションにも興味があります。おそらく、追加された非同期機能が役立つでしょう。

4

1 に答える 1

6

長時間実行されるタスク用に新しいスレッドを生成し、そのスレッドが完了するか、タイムアウトに達するまでブロックして待機します。タイムアウトに達した場合、タスクはおそらくブロックされており(無限ループ、デッドロック、またはブロックIO待機のいずれか)、スレッドを終了できます。

Thread thread = new Thread( RunPotentiallyTooLongCode );
thread.Start();
Boolean success = thread.Join( 1000 );
if( !success ) thread.Abort();

ここでは4.0非同期のものを使用する必要はありません。実際、このコードは.NET1.0でも正常に実行されます。

于 2012-09-05T13:31:36.237 に答える