winform使用后台线程处理,但是由于要显示到winform界面,界面依旧很卡的解决方法

当使用QueryRecord()这类耗时方法时,WinForm界面会出现卡死现象。为了解决这个问题,可以利用后台线程执行任务,但在更新界面控件如TextBox时,必须通过Invoke方法确保UI线程的安全操作。本文介绍了如何在按钮点击事件中运用后台线程和Invoke来避免界面卡顿。
摘要由CSDN通过智能技术生成

QueryRecord()是一个比较耗时间的方法,而且最终要讲结果显示到TextBox上面。在结果显示在控件上之前,界面处于卡死状态,本人找了很久,最终发现要使用Invoke方法。

private void QueryRecod(string SN, int sponsor, TextBox textShow)
            {
                if (SN == "")
                {
                    MessageBox.Show("PCB码不能为空!");
                    return;
                }
                string strSponse = string.Empty;
                Bobcat queryPCB = new Bobcat();//实例化一个对象
                int reNum = (queryPCB.QuerySfsServerInfo(sponsor, SN, out strSponse));//调用方法;
                List<string> list = new List<string>();//不能使用string[],因为Invoke()方法中参数只会传递stirng[0],stirng[1]、string[2]后续不会传递,结果报错
                list.Add(SN);//添加数据
                list.Add(strSponse);
               
    
           
    
 if (reNum == 1)
        {
  
 **if (textShow.InvokeRequired)//判断是否要跨线程**
            {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值