2012-09-05 6 views
6

ASP.NET 4.0 웹 페이지에서 너무 오래 실행되는 코드를 찾아서 방지하고 싶습니다. 그래서 나는이 같은 구조를 찾고 있어요 :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

관련 문제