みなさん、こんにちは。
私は、現在の作業プロジェクトでどのマルチスレッドアプローチを利用するかを理解するのに非常に時間がかかっています。私は人生でマルチスレッドアプリを書いたことがないので、これはすべて混乱し、非常に圧倒されます。これ以上の苦労なしに、これが私の背景の話です:
私は、会社のR&Dラボでテスト機器の制御アプリケーションの作業を引き継ぐように割り当てられました。プログラムは、3つの異なるデバイスとのシリアル通信を半同時で送受信できる必要があります。元のプログラムはVB6(マルチスレッドなし)で作成されており、テスト中に過剰なシリアル通信が原因でUIがロックされたときに安全上の問題が発生するまで、テストが必要な新しい製品で動作するようにモッディングする予定でした。 。その結果、テスターハードウェアの一部が爆発したため、最初はより快適で、マルチスレッドがこの問題の解決に役立つと考えたため、VB.Netでアプリを書き直してみることにしました。
私の計画は、メインのアプリスレッドから他の機器にコマンドを送信し、タイミングが重要なときにメインスレッドがロックされないように、受信側を独自のスレッドにスピンオフすることでした。しかし、私はまだ自分の選択肢に同意していません。問題を追加するには、受信した通信を受信時に個別のリッチテキストボックスに表示する必要がありますが、特定のデバイスからのデータをメインプログラムで解析する必要がありますが、最新のテストの結果のテキストのみです。 (ただし、受信したすべてのデータを含めるにはテキストボックスが必要です)。
これまで、デリゲートを調査し、スレッドを自分で処理して、BackgroundWorkersの調査を開始しました。今日、デリゲートを使用しようとしましたが、テキストボックスを更新する方法がわかりませんでした。デリゲート関数自体では実行できないため、これを実行するにはコールバック関数を使用する必要がありますか?スレッドを自分で処理する際に私が目にする問題は、スレッドとプログラムの残りの部分との間でデータをやり取りする方法を理解することです。BackgroundWorkers、私が言ったように、私は調査を始めたばかりなので、彼らについてどう考えるかはまだわかりません。
また、何らかの理由で停止がトリガーされるまで、生成されたスレッドを継続的に実行する計画であったことにも注意する必要があります。上記のオプションのいずれかでこれは可能ですか?私がまだ発見していない他のオプションはありますか?
情報の長さとバラバラな情報をぶらぶらしているように見えるという事実については申し訳ありませんが、私は厳しい締め切りにあり、まっすぐに考えることができないほどストレスを感じています!アドバイス/情報/リンクは大歓迎です。方向を選んで前に進むことができるように、オプションの計量に助けが必要です。この混乱を読むために時間を割いてくれたみんなに感謝します!