現在、で収集している外部ソースからのデータストリームがありますBackgroundWorker
。データの別のチャンクを取得するたびに、ReportProgress()
呼び出しを使用してそのデータをGUIに提示します。
ProgressChanged
関数は単なる同期メカニズムであるという印象を受けますが、ワーカースレッドがそれを呼び出すと、GUIスレッドが変更を処理している間、両方のスレッドがロックされます。したがって、問題は、バックグラウンドスレッドがGUIを更新している間、データを受信できないことです。つまり、いくつかのパケットが失われます。それは正しいですか、それとも私のパケットが他の場所から来る可能性が高いですか?
それが原因である場合、GUI更新を行うために2番目のスレッドを追加することは合理的な解決策でしょうか、それとも私が掘り下げるべきこれらの問題を解決するためのより良い/より徹底的な方法がありますか?
どんな考えや提案も大歓迎です。