Joe*_*Fox 2 c# singleton multithreading
我用C#编写了一个程序.现在我完成了所有功能,它的工作原理.但只能用一个线程运行.我正在进行大量计算,有时会将大约300 MB或更多的测量文件加载到应用程序中.
我现在想要使程序多线程,因为在激烈处理或i/o操作时用户体验非常糟糕.
重构程序的最佳方法是什么,以便可以在不太多的情况下制作多线程?我知道这是我之前想要的东西.但我没有.
我使用单例模式来处理大约3个重要的模块,这些模块几乎涉及程序的所有其他功能.
我使用了或多或少干净的MVC(模型视图控制)架构.所以我想知道是否有可能让用户界面在一个线程中运行而另一个应用程序在另一个线程中运行.
如果没有,加载和解析300MB,创建对象大约需要3分钟才能完成.在这个时候,用户没有得到GUI的响应.:/
更新:我的单身人士被用作一种存储空间.一个单例保存已解析的测量文件的对象,而另一个单例保存结果.我有不同的计算,它使用相同的测量文件并创建他们想要使用其他单例保存的结果.这是一个问题.
第二个是让人回应用户操作或至少避免窗口没有响应的警告.
谢谢大家的所有建议.我会试试看.对不起,我很抱歉.
一般来说,我避免使用单例模式,因为它会在未来产生很多问题,特别是在测试中.但是,如果您想要的是每个线程的单例,那么有一个相当简单的解决方案可以使这个工作适用于多个线程.将您的单例引用放在字段(不是属性)中并使用ThreadStaticAttribute进行装饰:
public class MySingleton
{
[ThreadStatic]
private static MySingletonClass _instance = new MySingletonClass();
public static MySingletonClass Instance { get { return _instance; } }
}
Run Code Online (Sandbox Code Playgroud)
现在每个线程都有自己的MySingleton实例.
| 归档时间: |
|
| 查看次数: |
1815 次 |
| 最近记录: |