我一直在构建一个控制台应用程序,我最近决定坚持使用WinForm GUI。这是在Visual Studio 2015(C#6.0,.NET Framework 4.5.2)
中完成的我有以下项目布局
|-Solution
|-- GUI (Windows Application)
|-- DoStuff1 (Class Library)
|-- DoStuff2 (Class Library)
|-- DoStuff3 (Class Library)
|-- ConsoleApp1 (ConsoleApp)
|-- ConsoleApp2 (ConsoleApp)
|-- Helpers (Class Library)
现在的问题是虽然它在功能上有效,但最终可能需要花费相当多的时间处理,所以我开始考虑使用BackgroundWorker,但到目前为止所有搜索都显示了如何在所有处理时使用它/ work正在同一个Windows应用程序项目中完成,而不是它们已经分离。
另外,我如何将我的类库中的进度报告回我的GUI,这与ReportProgress有关,但不确定如何设置...
这是可能的,还是我需要将类库中的所有代码移动到GUI项目中?
答案 0 :(得分:2)
最好使用Task.Run
将工作卸载到后台线程,因为它比BackgroundWorker
更灵活,更容易与其他工作一起构建。
您可以使用IProgress<T>
向gui报告进度,this blog post显示了如何执行此操作并将其与使用BackgroundWorker
进行比较的示例。
答案 1 :(得分:1)
是的,这绝对可能。您需要添加对要使用的项目的引用,即所有项目。您可能需要考虑使用接口来描述要从两个项目中引用的类型。
答案 2 :(得分:0)