ビジュアルスタジオで書かれたwinformsプログラムがVisual Basicでコーディングされています。VBプログラムはフリーズフリーズしますが、それでも応答しますか?
プログラムの主要部分は、シリアルコマンドを送信し、SQLにデータを書き込み、基本的な算術演算を行い、自分のフォームのコントロールを更新するwhileループです。私はバックグラウンドワーカーのループは、バックグラウンドワーカーからまだバックグラウンドで動作している間、コントロールを更新することができるように、作業サブを行います。しばらくして実行すると、フォームがフリーズし、いくつかのテキストボックスを更新する途中になります。しかし、バックグラウンドワーカーは引き続き実行されますが、SQLデータはまだ書き込まれています。ボタンが押されたことがわからなくても、フォーム上のボタンをクリックするのは不思議なことです。
視覚的にフォームが固定されているが、すべてのコントロールがまだ応答するような動作を引き起こすものは考えられません。
UIより速くワーカースレッドから呼び出すことができます。タスクマネージャーから気付かれるはずですが、100%コアを焼いているはずです。そしてそれはますます多くのメモリを使用して、最終的にあなたのプログラムをクラッシュさせることを見てください。遅くなる必要があります。 TextBoxにテキストを無限に追加するのではなく、しばらくして古いテキストを投げ捨てる必要があります。 –
'私はバックグラウンドワーカーでループをしているので、バックグラウンドワーカーからコントロールを更新することができますので、どのように動作するのかはわかりません。 BGW上で作業を行い、UIスレッドのみからUIを更新します。 BGWには進行状況を報告するための方法とイベントが含まれています – Plutonix