2012-09-05 32 views
6

ASP.NET 4.0 Webページでは、あまりにも長く実行されるコードを検出して防止したいと考えています。だから私はこのような構造を探しています:ASP.netの無限ループを防ぐ方法

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

我々は現在、4.0を使用しているが、私はまた、おそらく追加の非同期機能が役立つだろう、4.5のためのソリューションに興味があると思います。

答えて

6

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

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

ここで4.0非同期のものを使用する必要はありません。実際、このコードは.NET 1.0でもうまく動作します。

+0

私はあなたが4.5非同期を意味すると思います。トレッドのコンセプトをありがとう。 – Knox

関連する問題