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();
本文来自博客园,作者:沉迷编程的程序员,转载请注明原文链接:https://www.cnblogs.com/codeDevotee/p/7467548.html
欢迎各位找我代写程序,python、c#、web等都可以,加我请注明博客园微信:A15919195482
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 几个技巧,教你去除文章的 AI 味!
· 系统高可用的 10 条军规
· 对象命名为何需要避免'-er'和'-or'后缀
· 关于普通程序员该如何参与AI学习的三个建议以及自己的实践
· AI与.NET技术实操系列(八):使用Catalyst进行自然语言处理