2016-03-31 8 views
2

私は最近、WinForm GUIを固執することを決めたコンソールアプリケーションを構築しています。これは、(、C#6.0の.NET Framework 4.5.2)のVisual Studio 2015年に、私は次のプロジェクトのレイアウトを持っているバックグラウンドワーカーを同じソリューション内の別のクラスライブラリで使用することは可能ですか?

を行われている

|-Solution 
|-- GUI (Windows Application) 
|-- DoStuff1 (Class Library) 
|-- DoStuff2 (Class Library) 
|-- DoStuff3 (Class Library) 
|-- ConsoleApp1 (ConsoleApp) 
|-- ConsoleApp2 (ConsoleApp) 
|-- Helpers (Class Library) 

問題は今、それが機能的に動作しますが、それができること私はBackgroundWorkerを使って調べ始めましたが、これまでのすべての検索では、すべての処理/作業が同じWindowsアプリケーションプロジェクトで実行されているときにこれを使用する方法が示されていました。分離されている。

が可能これはまた、どのように私は戻って私のGUIに戻って私のクラスライブラリからの進捗状況を報告しに行くか、ReportProgressとは何か、それを設定する方法だけでわからない...

、または実行クラスライブラリのすべてのコードをGUIプロジェクトに移動する必要がありますか?

答えて

1

BackgroundWorkerよりも、他の作業をするためのより柔軟かつ容易であるとして、バックグラウンドスレッドに作業をオフロードするTask.Runを使用することをお勧めしてください。

を使用して進行状況をguiに報告するには、this blog postにその方法の例を示し、BackgroundWorkerと比較します。

+0

これとこの投稿http://stackoverflow.com/questions/28430872/task-run-and-ui-progress-updates私が成功した場所に私を成功させるために私を得ました。私は子クラスのライブラリを呼び出すことができ、ステータスバーにyレコードの処理xを取得することもできます: – Chris

+0

@Chrisはあなたに良いプラクティスを使用しましたか***キャンセルしていますか? – Kiquenet

1

はい、絶対に可能です。あなたが使用したいプロジェクトへの参照を追加する必要があります。両方のプロジェクトから参照するタイプを記述するために、インターフェースを使用することを検討することをお勧めします。

0

プロジェクトが.Net 4.5.2として設定されているため、asyncキーワードから利益を得ることができます。

フレームワークに組み込まれているため、進捗状況の変更通知とキャンセル操作をサポートしているため、プロジェクトの種類に応じて独立して動作します。

は、ルック here

関連する問題