私は、一定の時間実行する機能を持っていますが、それが終了していなければ中止します。 これを行う最善の方法は何ですか?"Watch Dog"やサンドボックスシステムをC言語で#
私はそれが死ぬと、それを殺すためにThread.Abort()
を使用するための機能がcatch
ブロックの間違った種類を持っている場合、これは動作しないかもしれません(タイムアウトして待って、別のスレッドで実行するだろうと考えている最高)。別のオプション(私は仕事をする方法がわからないもの)は、それをスローするプリエンプティブタイマーのようなものです。
良い方法がありますか?簡単なサンドボックスシステムのいくつかの種類ですか?
編集:私はそれをキャンセルする必要があるかどうかを確認するために、任意のシステムを持っていない実行しているつもりだ機能と私は(のようではないしなければならない)、それを追加することはできません。また、これは種類のテストハーネスなので、私がその機能を殺す状況は、それがうまく走っているということです。その場合、私は何かを正確にすることは期待できません。
'AppDomain'境界を越えて機能する戻り値とコールバックを得る方法はありますか? – BCS
Thread.Abort()よりも優れたBackgroundWorkerを使用できない場合は、コードをAppDomainにロードすることをお勧めします。 –
デリゲートを介して別のAppDomainの任意のメソッドを呼び出すためのラッパーコードを含むかなり良い記事があります。http: //blogs.geekdojo.net/richard/archive/2003/12/10/428.aspx。メソッドコールから結果を返すのはうまくいきましたが、何らかの理由で引数を渡すことができませんでした。多分あなたはより良い運を持っているでしょう。 –