C#程序优化的一些体会

主要针对大数据量的操作,界面响应假死或整体慢速的问题。


1、使用多线程在后台操作数据,应对程序界面假死问题。

Thread thread=new Thread(new ThreadStart(Method));

thread.Start();

2、数据添加到控件显示的速度问题。例如使用ListView,使用控件的VirtualMode模式。以及其他一些直接映射内存数据到控件的方式。

建立缓存

private static List<ListViewItem> cacheit = new List<ListViewItem>();

private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
{
    try
    {
        e.Item = cacheit[e.ItemIndex];
    }
    catch (Exception)
    {
    };
}

线程中:

开始位置

cacheit.Clear();

listView1.VirtualListSize = 0;

然后使劲的插入数据到cacheit中

最后

listview1.VirtualListSize=cacheit.Count;

避免ListView刷背景闪烁的问题

class ListViewNF : System.Windows.Forms.ListView
    {
        public ListViewNF()
        {
            // 开启双缓冲
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);

            // Enable the OnNotifyMessage event so we get a chance to filter out 
            // Windows messages before they get to the form's WndProc
            this.SetStyle(ControlStyles.EnableNotifyMessage, true);
        }

        protected override void OnNotifyMessage(Message m)
        {
            //Filter out the WM_ERASEBKGND message
            if (m.Msg != 0x14)
            {
                base.OnNotifyMessage(m);
            }
        }
    }

3、string 用来做为建立字符串追加的基础时,速度很慢。

例如

string s="";

s+="some"; //反复加到很长的时候速度很慢。。。

需要改用StringBuilder来追加,速度飞一般快。

4、数据库操作,尽量优化SQL查询语句,减少调用次数,好好和数据库用SQL语言沟通,把工作交给数据库去处理吧!!大笑

5、减少反馈进度的操作,如果每个操作都去反馈信息到界面报告进度,会拖慢整体速度,使得在大量数据时降低效率或达几十倍左右。




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值