サークル、メインフォームを最小化または移動したときにシリアルポートからデータを受信すると、
これはすでにどこかでカバーされています。私は検索して、私がすでに実装しているものを見つけます。
シリアルポート経由で接続されたデバイスからデータを受信するアプリケーションを開発しています。私はSerialPort datareceivedイベントを使用してデータをキャプチャしています。私はメインフォームのテキストボックスにデータを表示します。データは頻繁に受信されます。私はデバイスにコマンドを送信するためにTimerを使用しましたが、デバイスがデータを送信しました。タイマー間隔は100msです。 100ms間隔ごとに、いくつかのコマンドが送信され、それに対応してデータが受信される。私はTExtbox、ラベルなどのGUI要素を更新するためにInvoke関数を使用しました。すべての要素が美しく更新されています。しかし、フォームを移動する、フォームを最小化する、最大化する、またはどこかをクリックするなどのメインフォームの変更をデータ受信中に行うと、データ受信が停止します。私はなぜそれが起こったのか理由を見つけることができませんでしたか?私はまた、タイマー間隔を200,300,400,500に変更しましたが、同じ問題があります。
なぜそれが起こっているのか教えてください。そして、可能な解決策...事前に
おかげで.... :)
なぜでしょうか、serialport datareceivedイベントはセカンダリスレッドでも実行されます。 – Rahul
UIに非同期のスレッドポストバックなどを作成する必要があります。 http://dotnetperls.com/backgroundworker – abmv
これが唯一の方法です! – abmv