zoukankan      html  css  js  c++  java
  • c#界面卡死处理方法

    方法一:

    设置属性:

    Control.CheckForIllegalCrossThreadCalls = false;

    开启一个新线程

    Thread th = new Thread(() => Search(detailID.Trim()));
    th.IsBackground = true;
     th.Start();
     public void Search(string detailID)
    {
    dataGridView1.DataSource =BLLBillConsume.BllGetClearMarketLog_detail(detailID);
    dataGridView1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight;//文本向右对齐
     }

    上面的方法不推荐,推荐以下方法:

    拖一个组件backgroundWorker

    设置属性:

    backgroundWorker1.WorkerReportsProgress = true;
    backgroundWorker1.WorkerSupportsCancellation = true;

    执行用时较长的操作,

    backgroundWorker1.CancellationPending是用来判断是否允许用户取消
     private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                dtMain = BLLBillConsume.BllGetClearMarketLog_detail(detailID);
                if (!backgroundWorker1.CancellationPending)
                {//退出
                    backgroundWorker1.CancelAsync();
                }
            }
    Thread.Sleep(100000);只是为了模拟界面卡死

    然后就显示查询到的数据
     private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                dataGridView1.DataSource = dtMain;
                dataGridView1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight;//文本向右对齐
                //Search(detailID.Trim());
            }

    这个是开启线程

      backgroundWorker1.RunWorkerAsync();
     
  • 相关阅读:
    C#中的一些访问修饰符
    Win7下各种Oracle服务的作用
    MySql创建视图
    Sql Server SQL语句创建数据库
    C语言函数指针:获得任意类型数组的最大
    SQLHelper帮助类
    .Net有哪些大型项目、大型网站的案例
    复习一些小知识
    Js作用域与作用域链
    路飞-自定义User表和Media配置
  • 原文地址:https://www.cnblogs.com/codeDevotee/p/7467548.html
Copyright © 2011-2022 走看看