欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

性能优化- 多线程异步IO操作

程序员文章站 2022-07-02 22:55:08
...

程序启动太慢,有很多原因,例如:一次性启动太多窗口;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.Start();
    Console.ReadKey();
}

 

在使用多线程的过程中,得要注意互斥同步问题,使用lock 关键字来解决。

private static object oLock = new object();
private static void Test2(object Count)
{
  lock (oLock)
  {
    // do your task
  }
}

 

 

参考资料:

c# 界面异步加载

https://bbs.csdn.net/topics/390675047

C# 多线程

https://www.runoob.com/csharp/csharp-multithreading.html

解析C#多线程编程中异步多线程的实现及线程池的使用

https://www.jb51.net/article/80542.htm

 

相关标签: C#

上一篇: windows 小技巧

下一篇: 性能优化