C#使用winform刷新界面的时候假死
各位大家好,现在我用后台线程来刷新界面,但是在数据量大的时候界面出现卡死现象,不知道如何解决,希望各位能给我一些建议,以下是程序的伪代码,希望各位能帮我看看,想想办法,谢谢!!
现在在数据量较大的时候界面会出现卡死现象,现在trd_Topic好像还是用了主线程的资源,我现在不知道用什么方法能解决这个问题,希望各位能帮我出出主意,分数没有了,希望大家见谅,谢谢!!
//当前类为一个winform类,假设是类A
Thread trd_Topic;//为全局变量
private delegate void FlushClient();//代理 为全局变量
FormDoc doc = null;//全局变量,为要刷新数据的UI
Begin()
{
....
trd_Topic = new Thread(CrossThreadFlush);
trd_Topic.IsBackground = true;
trd_Topic.Start();
....
}
private void CrossThreadFlush()
{
while (true)
{
if (trd_Topic.ThreadState == ThreadState.Stopped)
{ }
else
{
Thread.Sleep(2000);
net_Task();
}
}
}
private void net_Task()
{
monitorErrorCount = 0;
try
{
if (this.InvokeRequired)//等待异步
{
FlushClient fc = new FlushClient(net_Task);
this.BeginInvoke(fc);//通过代理调用刷新方法
}
else
{
....................
lock (OpenStations)
{
for (int i = 0; i < OpenStations.Count; i++)
{
try
{
foreach (Equ equ in Equs.Equipments)
{
if (equ.Species.Flag)
{
doc = this.DockPanel.FindDocument(name) as StationLayoutDoc;//doc为要刷新的UI,可以假设为类B
if (doc != null)
{
doc.Invoke(new EventHandler(getTopic), new object[] { equ, EventArgs.Empty });//getTopic 函数实现数据的读取已经doc界面的刷新
}
}
}
}
catch (Exception)
{
}
}
}
..............................
}
}
catch(Exception e)
{}
}
private void getTopic(object o, EventArgs e)
{
//......................获取数据的操作
doc.refresh(content, equ);//content获取到的刷新数据,equ为要刷新的设备
//.......................其他操作
}
现在在数据量较大的时候界面会出现卡死现象,现在trd_Topic好像还是用了主线程的资源,我现在不知道用什么方法能解决这个问题,希望各位能帮我出出主意,分数没有了,希望大家见谅,谢谢!!
...全文
相关推荐
C# WinForm程序处理后台繁忙导致前台控件假死现象解决方法
主要介绍了C# WinForm程序处理后台繁忙导致前台控件假死现象解决方法,本文通过Application.DoEvents()解决这个问题,并讲解了Application.DoEvents()的作用,需要的朋友可以参考下
C# Winform部署YOLOv5 ONNX模型实战指南
在工业视觉与AI应用开发中,模型部署的工程化落地是关键环节。ONNX Runtime作为高性能推理引擎,通过统一的模型交换格式打通PyTorch等训练框架与C#等应用层之间的壁垒。它支持CPU/GPU多后端加速,且提供灵活的API接口,使开发者能够深度定制后处理逻辑,实现高效的目标检测推理。针对工控机等Windows环境,C# Winform结合OpenCvSharp与ONNX Runtime,可构建界面友好、实时性强的本地检测系统。本文以YOLOv5模型为例,系统讲解从模型导出、环境配置到Winform界
C# WinForm多线程防止界面假死源码
C# WinForm多线程防止界面假死源码,代码里面包含显示进度的例子,针对多线程使用的一个很好例子。供初级人员参考。
C# 窗体(WInform)界面开发大全
C#界面设计典例,WInform界面开发系列的介绍,主要针对性介绍Winform开发过程中,经常用到的模块:数据字典模块、参数配置模块、权限管理模块的模块化应用,以及各模块的分合之道。
winform(c#)最全60种非常漂亮界面样式\皮肤(经典)
winform(c#)最全60种非常漂亮界面样式\皮肤(经典)


