私はタスクの実行時間を制限する様々な方法があることを知っています。以前に使用したメソッドの欠落や変更/改善があるかどうかは疑問でした。どのようにタスクが.Netで実行される時間を制限できますか?
方法論がどのくらい正確に機能しているかわからないところで、私はそれに質問を入れました。
既存の方法は、私は必ずしも自分自身を使用していないがを知っている:それは、その後一定時間を終了スレッドを殺すためにため
- は、世論調査を
Thread
を作成します。この解決策は、ThreadAbortException
が多少厄介であり、あなたが覚えていれば、コードがどこで終了するか保証されないということを覚えていれば、それは素晴らしいことではありません。 IAsyncResult
パターン、この問題は、一定の時間待つことができますが、リクエストを中止するように通知する簡単な方法はありませんので、チェックされているブールフラグ(または同様のもの)を設定する必要があります非同期コードの内部で停止し、停止させます。ここで問題となるのは、非同期コードがコードの特定のセクションに詰まっている場合、非同期コードが実際に終了する前にしばらくの間実行される可能性があるということです。- 私はしばしば非同期のもののために
BackgroundWorker
を推奨していますが、これをASP.Netの下で使用することはできますか(私はそう思うでしょう)、それは特定の時間の後に非同期プロセスを終了する簡単な方法を持っていますか? - .Net 4.0のタスクAPIを使用します(現在のところ、私の仕事は.Net 3.5に制限されていますので、私にとってはオプションではありません)。 MSDNのドキュメントを読むと、
CancellationToken
を使用してタスクを簡単に取り消すことができますが、取り消しがどれほど迅速に行われ、finally
ブロックが確実に呼び出されるようになります。
全ての溶液/提案/方法論は、4から