2011-02-03 13 views
0

いくつかのタスクを実行するとき、私は復元ポイントを作成するためのオプションを持っているプログラムを持っている...プログラムのロック

私の問題は、あなたがそうするように、それをクリックしたときに、それが終了されるまで、プログラムはちょうどロックアップということです復元ポイントを作成します。

私はプログラムに別々のフォームを入れているし、それは私がダウンロードしたマーキープログレスバーコントロールを持っているので、アイデアがある...

ユーザーは

frmRestore.showを「復元ポイントを作成」をクリック復元ポイントは、ポイントを復元し 作成されている間 マーキープログレスバーが延々と続く frmRestore.hide

に行われますが、クリックしたときの事は、ある復元ポイントを作成し、フォームのショーやプログラムだけでロックアップ、onces復元ポイントが作成されるフォームが再び隠れる。

バックグラウンドワーカーでこの問題を解決できますか?正直言って、私はそれが何であるかを完全には確信していません、私はコントロールを悩ましましたが、何か有用なものを見つけることができません。

ありがとうございました

答えて

1

復元手順を別のスレッドに入れる必要があります。あなたのプログラムがマルチスレッドでない場合は、実行中のタスクが終了するまでリニアに動作しロックします。

+0

おかげで...私はあなたが新しいスレッドを使うのですか、これまでVB.NETの専門家からですか?またはプログラムをマルチスレッド化する方法。 – Coozbiscuit

+0

VB.NETでそれを行う方法がわかりませんが、簡単でなければなりません。C#でスレッドmyThread =新しいスレッド(プロシージャ名);それから、いつでもそのスレッドを開始したり停止したりすることができます。 – sed

+0

このリンクを確認する必要があります:http://support.microsoft.com/kb/315577 – sed

1

メインスレッドで何か集中しているため、プログラムがロックされています。

それはGUIアプリケーションでこのように書き

//

//が

//いくつかのものを行う

//応答のGUIシステムに対応し、再描画いくつかのものを行いますシステムに戻してguiを書き直す

そして、「//何かする」をブロックすると、プログラムは応答できなくなり、いくつかの処理が完了するまでGUIを再描画できなくなります。

あなたがする必要があるのは、セカンダリスレッドを使用するか、あなたが言ったようなバックグラウンドワーカーを使用することです。スレッドが似ている、あなたは、システムまたはこれは私が真剣にVBを使用したことがありませんが、私は同じ概念は、Qtのに適用さだと思う

0

(約暴言を始めることができますGUI

希望をブロックせずにそれで何かを行うことができますQtはここで良い)。

私はVBは、GUIのスレッドまたは単に1つの統合1つを使用するかどうかわからないんだけど、私はあなたの問題はGUIスレッドが、それは「ロック」させ、長い非GUIの操作を実行していることだと思います。ロックすると、プログラムはタスクが終了するのを待っているため、プログラムとの対話はできません。

は別のスレッドを使用して...すべての返信用