我已经用C#编写了一个程序。现在我完成了所有的功能并且工作。但只能用一个线程运行。我正在进行大量计算,有时会将大约300 MB或更多的测量文件加载到应用程序中。使用单线程多线程C编写程序#
我现在想让程序多线程化,因为用户体验在激烈的处理或I/O操作时非常糟糕。
什么是重构程序的最佳方式,以便它可以进行多线程,没有太多affort?我知道这是我应该思考的东西。但我没有。
我对程序几乎所有其他功能中涉及的3个大而重要的模块使用了单例模式。
我使用了一个或多或少干净的MVC(模型视图控制)架构。所以我想知道是否可以让用户界面在一个线程中运行,而其他应用程序在另一个线程中运行。
如果不是,加载和解析300MB,创建对象大约需要3分钟才能完成。在这段时间内,用户从GUI没有得到任何回应。 :/
更新: 我的单身人士被用作一种存储。一个单身保存解析的测量文件的对象,而另一个单身保存结果。我有不同的计算,它们使用相同的测量文件并创建他们想要使用另一个单身人士保存的结果。这是一个问题。
第二种方法是让家伙对用户操作做出响应,或者至少避免此警告窗口没有响应。
谢谢大家的所有建议。我会尝试他们。对于迟到的答复抱歉。
在.NET简单的方法:你可以做你的处理BackgroundWorker的(S),所以UI线程可以自由地做他的生意。 – jv42
PLINQ如何? – mironych
你使用什么UI技术(WinForms,WPF,Web等)? –