2011-07-16 13 views
2

Visual Studioで新しいGUIアプリケーションを作成しても、私のやり方が「正しい」方法ではなく、デフォルトの設定ではないと感じるので、私はいくつかヒントを必要とするかもしれません。フォームをインスタンス化する場所は?

私がやっていることは、すべての作業を行うアプリケーションにメインクラスがあることです。データを収集して管理するいくつかのスレッドを開始し、GUIのフォームに「レポートする」ようにします。

私のmain.cs(アプリケーションのエントリポイント)をオフにするには、ワーカークラス(メインクラス)とフォームを別々の2つのスレッドに入れます。コミュニケーションはその後代議員によって行われ、私が望むだけでなく、「流れる」こともありません。

メインフォームがメインワーカークラスに登録されていてGUIフォームを所有している方が良いでしょうか?お互いに連絡を取るためにいくつかの作業が必要な2つの別々のスレッドの代わりに?

答えて

2

これを実行する方法が1つあります。あなたがやっていることには最適ではないかもしれませんが、渡しているデータによって異なります:

フォームはスタートアップオブジェクトとして使用でき、BackgroundWorkerのコントロールを使用できます。

BackgroundWorkerにはいくつかのイベントがあり、すべて自動的にフォームスレッド上で実行されるため、デリゲートについて心配する必要はありません。

BackgroundWorkerはレポートの進行状況をサポートし、バックグラウンドスレッドの完了時にオブジェクトを完了イベントのメインスレッドに戻すことができます。

フォームが閉じられるまでフォームがブロックされるメソッドを実行すると、同じスレッドでフォームを開始できないことは間違いありません。実際に試しました)

関連する問題