winform 数据量不大但总是卡死

chenrong980 2013-04-24 01:54:36

我的界面是这样的,①里面是用户控件,特别是点击系统管理的时候最容易卡死(系统管理是Form窗体)其余大多数是用户控件。
主程序为
public FormMain()
{
InitializeComponent();
ThreadStart myTs = new ThreadStart(RSSMS);
Thread mytd = new Thread(myTs);
mytd.Start();

}
public void RSSMS()
{
while (true)
{
try
{
//读取短信
}catch
{
}
}
点击系统管理—>权限管理的代码是
if (checkchildFrmExist("权限管理") == true) { return; }
FormUserManage form1 = new FormUserManage();
form1.ShowDialog();
权限管理界面里的代码
public FormUserManage()
{
InitializeComponent();
sql = "select AreaID,DeviceDesc,DeviceID from RemoteDevices";
DataSet myds4 = dataBase.RunProcReturn(sql);
for (int f = 0; f < myds4.Tables[0].Rows.Count; f++)
{
CheckBox chkDevice = new CheckBox();
chkDevice.Name = "chkDesc" + myds4.Tables[0].Rows[f]["DeviceID"].ToString();
chkDevice.Text = myds4.Tables[0].Rows[f]["DeviceDesc"].ToString();
panelLiaoNing.Controls.Add(chkDevice);
}

}

点击【叹号】图标加载用户控件代码
try
{
if (((ToolStripButton)sender).Checked) return;
for (int i = 0; i < this.toolBar.Items.Count; i++)
{
if (toolBar.Items[i].GetType().Equals(typeof(ToolStripButton)))
{
if (toolBar.Items[i] != sender)
((ToolStripButton)toolBar.Items[i]).Checked = false;
else
((ToolStripButton)toolBar.Items[i]).Checked = true;

}
}
if (DisplayControl != null)
{
DisplayControl.Dispose();
}
DisplayControl = new ControlAlarmList();
DisplayControl.Parent = panelView;
DisplayControl.Dock = System.Windows.Forms.DockStyle.Fill;
((ControlAlarmList)DisplayControl).TargetID = TargetID;
((ControlAlarmList)DisplayControl).btnQuery_Click(sender, e);
selectMenu = "AlarmList";

}
catch
{
}
用户控件中更换列表中的红色和黄色图片
btnQuery_Click(object sender, EventArgs e)
{
if (dgvInfo.Rows.Count > 0)
{
//更新图片
for (int i = 0; i < dgvInfo.Rows.Count; i++)
{
string rank = dgvInfo["Rank", i].Value.ToString();
if (rank == "紧急")
dgvInfo["RankColor", i].Value = (Image)Properties.Resources.ResourceManager.GetObject("hong");
else
dgvInfo["RankColor", i].Value = (Image)Properties.Resources.ResourceManager.GetObject("huang");
}

}
}
...全文
311 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Banianer 2013-04-24
  • 打赏
  • 举报
回复
sql = "select AreaID,DeviceDesc,DeviceID from RemoteDevices"; 你这样的语句,不卡才怪。 稍微仔细看了一下你右边的边界,滚动条已经变的很小。 说明数据条数已经挺多的了,但是你没有进行分页。 每一页若干条数据,等用到该页的时候才去请求。 不要把所有的数据一次性全部读出来。
md5e 2013-04-24
  • 打赏
  • 举报
回复
引用 2 楼 chenrong980 的回复:
引用 1 楼 liuchaolin 的回复: 用线程异步处理试试是在主窗体异步处理还是每个用户控件都要异步处理啊
用到数据加载的都进行异步处理
chenrong980 2013-04-24
  • 打赏
  • 举报
回复
引用 1 楼 liuchaolin 的回复:
用线程异步处理试试
是在主窗体异步处理还是每个用户控件都要异步处理啊
md5e 2013-04-24
  • 打赏
  • 举报
回复
用线程异步处理试试
源码直接下载地址: https://pan.quark.cn/s/0c43ed5159df 本资源为HCDA认证培训教程,旨在面向准备参加HCDA考试的学员,或希望掌握TCP/IP基础、路由、交换技术、广域网、以太网技术基本原理以及华为通用路由平台VRP上实现的相关内容。具体涵盖的模块包括:Module 1-网络互联基础、Module 2-路由和路由协议基础与实现、Module 3-以太网交换技术基础与实现、Module 4-广域网技术基本原理与实现、Module 5-网络安全基础、Module 6-华为数通产品概述 ### 华为-NAT技术详解 #### 一、概述 NAT(Network Address Translation,网络地址转换)是一种在专用网络内部使用私有IP地址的情况下,使这些设备能够通过公有IP地址进行外部通信的技术手段。NAT技术在多种网络环境中得到广泛应用,特别是在企业网络中发挥着关键性作用。作为HCDA认证培训教程的一部分,本文档将系统性地阐述NAT的基础理论及其实现方法,并深入探讨在华为VRP平台上的具体应用场景。 #### 二、NAT处理流程 NAT处理流程主要包含两种类型:基于源IP地址和基于目的IP地址的处理模式。 ##### 1. 基于源IP地址的NAT处理 **1.1 一对一NO-PAT** 一对一NO-PAT即非端口地址转换(No-Port Address Translation),在这种模式下,一个私有IP地址对应一个公有IP地址,不涉及端口号的转换。当配置了NAT no-pat时,华为设备会为已配置的多通道协议产生的实际流量数据建立server-map表项。这种方式适用于需要固定公网IP的服务器等场景。 **1.2 多对一...

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧