程序启动太慢,有很多原因,例如:一次性启动太多窗口;IO操作等待,一次性加载所有Excel文件;数据库访问延迟;不合理的代码逻辑,创建太多对象;内存不足使用;等等。
打开一个程序,如果资源放在窗口的main线程中加载,那会多增加一些时间,对于一些数据资源比较庞大的程序来说,可能需要几分钟。也就是说,你得要等几分钟,才能使用这个软件,等到花儿都谢了。。。
解决办法:使用多线程,异步处理io操作,将资源加载放在子线程里执行。
程序启动的时候,子线程就开始加载资源,等加载完了设置一个成功标志,以后如果要加载,就先判断缓存。在这种模式下,用户就可以进行他们自己的操作,而不用等待了。
把这个思路在目前的项目中应用了一下,打开时间从2分钟减低到了25秒。(感谢万老师的指点。)
c#多线程结构:
public static void CallToChildThread()
{
Console.WriteLine("Child thread starts");
//load task ..
xxfunc();
}
static void asyncLoad()
{
ThreadStart childref = new ThreadStart(CallToChildThread);
Thread childThread = new Thread(childref);
childThread.