2011-12-29 8 views
3

私は.NET 3.5(C#)を使用しています。クラスには開始メソッドと停止メソッドがあります。 Startメソッドを別のスレッドから呼び出すためにBackgroundWorker.DoWorkを使用しています。
メインスレッドからそのスレッド(Startメソッドを実行しているスレッド)にコマンドを送信し、実行中の現在のメソッドを停止して別のスレッドを実行するように指示したい(Startメソッドの実行を停止して実行を開始する) Stopメソッド)。 これを行う最善の方法は何ですか?実行中のスレッドを中断して別の方法を実行させるにはどうすればよいですか?

ありがとうございます!

+0

Startメソッドと外部から何らかの種類のネゴシエーションプロトコルを定義する必要があります。.NET 3.5を使用しているので、私は単に起動メソッドで赤色になり、あなたの起動メソッドよりもブーリアンが設定されているかどうかをチェックするだけで、適切な処置(シャットダウンのような)を取ることができます – Polity

答えて

0

別のスレッドに切り替える準備ができたら。 threadstartメソッドを復帰させます。これは、正常にスレッドを終了するための最良の方法です。 これが完了すると、別のスレッドを生成できます。

+0

「スレッドスタートメソッドを返せ」とはどういう意味ですか?実行中のスレッドが終了するのを待つ必要はありません。私はそれを直ちに停止し、別の方法の実行を開始したい。 – menacheb

+0

スレッドが実行されているとき、実際にはメソッドを実行しています(threadstartメソッドを呼び出すことができます)。実行中の場合は、プロパティがfalseに設定されている場合は、プロパティ(別のスレッドを生成する場所からアクセス可能)をチェックし続けます。クリーンアップを行い、そのメソッドからただ戻ります。あなたのスレッドは終了します。 –

+0

これはオプションですが、私はstartメソッドに介入したくありません。他のアイデアはありますか? – menacheb

0

単純なあなたがしたいことを行う方法はありません。

「あなたがやっていることを止めて、この新しいメソッドを実行し始める」ことは、安全で一貫性のある方法では実現できないため、.NETスレッドフレームワークにそのようなメソッドはありません。

あなたのスレッドはどのように構造化されているかによって異なりますが、解決策は通常、いくつかのプロパティをポーリングするか、(コード・アーキテクチャーに合っていれば)スレッドが終了するように通知するイベント、あなたの場合は、代わりに他のメソッドの実行を開始してください)。

+0

私は理解していますが、その主題の記事への言及を参考にしてもらえますか?ありがとう。 – menacheb

関連する問題