线程优化,如何能让界面不太卡。
开了两个线程,定义了俩个Bool变量用来标识这两个线程是否执行完。执行完后赋值true。
然后再timer里没3秒执行if判断,如果线程实行完了,再将线程实行一边,如此循环。代码写好了,界面有点卡,如何优化呢?
以上是简化代码,用委托执行线程方法,为的是在线程中可操作界面控件,可还没写界面控件的操作代码,运行的时候就有点卡了,窗体拖动不流畅,代码倒是都执行了。
请问如何优化这个过程。
然后再timer里没3秒执行if判断,如果线程实行完了,再将线程实行一边,如此循环。代码写好了,界面有点卡,如何优化呢?
//构造函数给委托指定方法,应为线程中会操作界面控件(但对界面控件的操作代码还没写就有点卡)
public frmMain()
{
InitializeComponent();
this.getLoadA = this.getAData;
this.getLoadB = this.getBData;
}
bool isAThreadEnd = false;
bool isBThreadEnd = false;
//A委托
public delegate void setASDelegate();
private setASDelegate getLoadA;
//B委托
public delegate void setBDelegate();
private setBDelegateg etLoadB;
//允许A操作控件
private void ThreadAMethod()
{
this.Invoke(this.getLoadA);
}
//允许B操作控件
private void ThreadBMethod()
{
this.Invoke(this.getLoadB);
}
//开启A线程
private void startAThread()
{
ThreadStartGetAData = new Thread(new ThreadStart(this.ThreadAMethod));
ThreadStartGetAData .Start();
}
//开启B线程
private void startBThread()
{
ThreadStartGetBData = new Thread(new ThreadStart(this.ThreadBMethod));
ThreadStartGetBData .Start();
}
private void getAData()
{
//各种操作,暂时没写界面控件控制代码执行完后isAThreadEnd赋值true
isAThreadEnd=true;
}
private void getBData()
{
//各种操作,暂时没写界面控件控制代码执行完后isBThreadEnd赋值true
isBThreadEnd=true;
}
//单击按钮开始线程
private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
this.startAThread();
this.startBThread();
}
//程序运行后即可执行
private void timer1_Tick(object sender, EventArgs e)
{
if (isASThreadEnd == true)
{
this.startAThread();
}
if (isBThreadEnd == true)
{
this.startBThread();
}
}
以上是简化代码,用委托执行线程方法,为的是在线程中可操作界面控件,可还没写界面控件的操作代码,运行的时候就有点卡了,窗体拖动不流畅,代码倒是都执行了。
请问如何优化这个过程。
...全文
相关推荐
javascript引擎长时间独占线程造成卡顿的解决方案
主要介绍了javascript引擎长时间独占线程造成卡顿的解决方案,需要的朋友可以参考下
Win11文件资源管理器太卡?试试这招恢复Win10流畅体验(含详细注册表教程)
本文提供了Win11文件资源管理器卡顿问题的全面优化方案,从关闭视觉效果到高级注册表调整,再到第三方文件管理器推荐。通过详细教程和实测数据,帮助用户恢复Win10般的流畅体验,显著提升文件操作效率。
Android性能优化之UI卡顿优化实例分析
网络上有许多关于UI卡顿优化的解析,但大部分都是简单的原理介绍,例子都比较简单,往往是为了验证UI卡顿而硬造的,不能在实际场景中应用。 本文结合大图加载,与UI卡顿优化,向大家介绍UI卡顿优化的基本原理。 UI卡顿的根本原因是UI线程无法在16ms内完成UI绘制。 下面以android大图加载为例,结合内存分析,systrace,TraceView等分析UI卡顿优化. 两种大图加载方式对比 方法1 Android 高清加载巨图方案 拒绝压缩图片 使用BitmapRegionDecoder分区域加载
jprofiler-1.1.1
动态追踪java程序执行过程中方法调用序列。利用jvmpi,获取虚拟机运行时的信息
codeforces:我对Codeforces问题的解决方案
码力 我对Codeforces问题的解决方案 用户名


