나는 여러 가지 방법으로 작업이 .Net에서 실행되는 시간을 제한한다는 것을 알고 있으며 이전에 사용했던 방법에 대해 놓친 또는 수정/개선 된 사항이 있는지 궁금해했습니다..Net에서 작업이 실행되는 시간을 제한하는 방법은 무엇입니까?
방법론이 얼마나 정확하게 작동하는지에 대해 명확하지 않은 곳에 질문을 포함 시켰습니다.
기존의 방법 나는 반드시 자신을 사용하지 않는하지만 알고 있어요 : 그 다음 일정 시간 동안 완료 스레드를 죽이는
- 는 설문 조사를
Thread
을 만듭니다. 그것은 다소 불쾌한 그리고 내가 기억한다면 당신은 당신이 코드는 사용 등 - 사용
IAsyncResult
패턴을 unamanged 자원을 떠날 수, 즉 종료됩니다거야 보장이 없다ThreadAbortException
년대에 의존으로이 솔루션은 크지 않다는 이 문제는 일정 시간 동안 기다릴 수 있지만 요청이 중단되도록 신호를 보낼 수있는 간단한 방법이 아니기 때문에 확인할 부울 플래그 (또는 비슷한)를 설정해야합니다. 비동기 코드 내부에서 멈추게합니다. 여기에서 문제는 비동기 코드가 코드의 특정 섹션에 걸린 경우 실제로 종료되기 전에 일정 시간 동안 계속 실행될 수 있다는 것입니다. - 비동기 물건에 대해 사람들이
BackgroundWorker
을 자주 보았지만 ASP.Net에서이 항목을 사용할 수 있습니까? (그렇다고 가정합니다) 특정 시간 후에 비동기 프로세스를 종료하는 간단한 방법이 있습니까? - .Net 4.0에서 작업 API를 사용하십시오 (현재 모든 작업은 .Net 3.5에 제한되어 있으므로 나를위한 옵션이 아닙니다). MSDN 설명서를 빨리 읽어 보면
CancellationToken
을 사용하여 작업을 쉽게 취소 할 수있는 것처럼 보입니다. 그러나 취소가 얼마나 빨리 이루어지며finally
블록이 호출되는지 확인할 수 있습니다.
모든 솔루션/제안/방법론은 4에서