2009-06-11 7 views
1

ActiveMQへの移行中に発生した問題を解決する方法を知りたい人がいますか? ActiveMQを使用してこのプロジェクト(C#)の通知を送信しています。実装が完了した後、スレッドの問題に関するいくつかのエラーが見つかりました。 ( この例外の解決方法は「this.InvokeRequired ....など」を使用することですが、私の質問はInvokeRequiredを必要とする方法を見つける

この呼び出しが必要なすべてのメソッドを見つける方法はありますか?

もちろん

私は、すべてのイベントが通知にトリガ、しかし、離れて、それは私に多くの時間がかかるという事実から、それは私の将来のプログラミングエラーを解決しません段階的にチェックすることができ。

私は推測しますこれを理解するにはより良い方法がありますが、私は今考えることはできません。前に問題が発生しましたか?

ありがとうございます。

答えて

3

いいえもちろん、テスト駆動型プロジェクトを最初からセットアップしていない限り、これを自動化する方法はありません。この場合、スレッドの正しさをテストする条件をいくつか追加できます。

ソフトウェアは、非常に特殊な方法(例えば、FxCopや特定のことに関するIDEの警告)を除いて、意図したものを推論することはできません。あなたが書いたことは、必ずしもあなたが書こうとしていたものではありません。あなたは、あなたがやるべきことを理解できるソフトウェアを求めることになります。

呼び出しが必要かどうかを知る唯一の方法は、特定の関数が動作するコンテキストを知ることです。バックグラウンドスレッドで動作し、メインスレッド(GUIコードなど)で実行する必要があるコードを呼び出す場合は、呼び出しが必要です。

あなたはそれを理解しなければなりません。

+0

わかりました。私はそれを行う自動化された方法がないのではないかと心配していました。私はちょうどコードを通過する必要があると思う:) あなたの助けていただきありがとうございます!少なくとも私は存在しないものを探していることはありません! – srodriguez

+0

ここでは新しいので、最も役立つ答えの横にあるチェックマークをクリックすることを検討する必要があります。私はそれが私でなければならないと言っているわけではありません。 ;) –

1

呼び出しているメソッドによっては、呼び出しが必要なものではありません。これらのメソッドを呼び出すスレッドによって異なります。

Winformsアプリケーションでメソッドを呼び出す場合、UIスレッド以外のスレッドでは、Invokeが必要になります。

コードによっては、特に、いつも便利なバックグラウンドスレッドの名前を付けている場合、どのスレッドからどのような呼び出しが行われたかを分析するのは簡単です。しかし、これを行うための自動化された方法はないでしょう - ちょっと戻ってコードを見てください。

関連する問題