2016-03-31 18 views
2

我一直在構建一個控制檯應用程序,我最近決定將WinForm GUI粘貼到上面。這是在Visual Studio 2015年正在做的(C#6.0,.NET框架4.5.2)是否有可能在同一解決方案中使用具有單獨類庫的後臺工作程序

我有以下項目佈局

|-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

這是更好地使用Task.Run卸載工作提高到一個後臺線程,因爲它是更靈活,更容易與其他工作的組成比BackgroundWorker

您可以使用IProgress<T>向gui報告進度,this blog post顯示瞭如何做到這一點並將其與使用BackgroundWorker進行比較的示例。

+0

這和這篇文章http://stackoverflow.com/questions/28430872/task-run-and-ui-progress-updates讓我的方式成功讓我到我想要的地方。我可以打電話給兒童班級圖書館,甚至可以在我的狀態欄中獲得處理x記錄 - 快樂的日子:) – Chris

+0

@Chris你有沒有使用任何良好的做法和***取消***? – Kiquenet

1

是的,這是完全可能的。您需要添加對您想要使用的項目的引用,這就是全部。您可能需要考慮使用接口來描述要從兩個項目中引用的類型。

0

由於您的項目配置爲.Net 4.5.2,因此您可以從async關鍵字中獲益。

它在項目類型上獨立工作,因爲它被構建到框架中,並且支持進度更改通知和取消操作。

看看here

相關問題