2011-12-15 10 views
2

私はマシンビジョンプロジェクトで働いています。私のプロジェクトでは、私は印刷検査のためにカメラを使用しています。 私のアプリケーションでは、画面上に2つのボタンを表示するために1つのピクチャボックスを使用しています.2つのボタンでライブ表示用のボタンとフルスクリーン用のボタンがあります。livedisplayボタンでは、whileループで画像を表示します。同時にwhileループ処理中に全画面ボタンを押す必要があります。ループが実行されている間は、フォームのボタンのどれかをプッシュすることができないため、フルスクリーンのボタンを押すことはできません。 (ループはしばらくです)なぜこれが起こっていますか?ループ実行中にこのボタンをクリックするにはどうしたらいいですか?whileループ実行中にボタンを押す方法は?

答えて

1

1つの解決方法は、whileループを実行するのではなく、タイマーを一定間隔で使用し、タイマーティックで画像を画像ボックスに更新します。ユーザーがLiveupdateボタンをクリックすると、タイマーを開始できます。間隔を非常に低く(たとえば100ms)保つことで、更新がLIVEであると感じられるようにすることができます。これは、アプリケーションが他のボタンのクリックのように他のユーザーアクションの入力を取るときに、2つの更新の間にある間隔を与えます。

3

マルチスレッドの素晴らしい世界へようこそ。 whileループを別のスレッドに置く必要があるため、UIは応答可能です。スレッディングは長く深いコンセプトであり、それを実行する方法は数百万もあります。

パスは、BackgroundWorkerスレッディングモデルを使用するのが最も抵抗力があります。詳細については、hereを参照してください。

+0

リンクを正しく取得できません。 –

+0

リンクを編集しました。私はもともと、間違ったリンク(Silverlight用)を固定しましたが、十分にはっきりしていません。とにかく、今働いているはずです。 –

+0

そして、最初は少し複雑に見えるかもしれませんが、BackgroundWorkerモデルはアプリケーションをマルチスレッド化する非常に簡単な方法です。そして、より高度なマルチスレッドの概念についての良い紹介です。 –

関連する問題