查权重网站(快手账号权重下载)
12062023-12-02
各位老铁们,大家好,今天由我来为大家分享C# winform多线程异步更新UI,以及不建议主线程刷新ui的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
本文目录
1.新开的线程是无法直接访问UI控件的,如果需要访问,可以通过控件的Invoke方法,或者用System.Threading.SynchronizationContext.Current.Post方法2.一定不要在控件的内部事件处理方法里面使用Sleep等线程暂停方法!像我这样写就不会阻塞了
当然是自己添加消息映射了。将UI的句柄或窗口指针传递进线程,然后在线程中PostMessage(),UI的类中添加消息映射和消息处理函数。
首先在窗体上放一个button和一个picturebox
(pictureboxvisible为false)这个多线程的目的是点击按钮后图片正常的运行,另一线程在睡眠10秒后在执行。
privatevoidbutton1_Click(objectsender,EventArgse)
{
//开启线程
System.Threading.Threadthread=newSystem.Threading.Thread(newSystem.Threading.ThreadStart(this.Result));
pictureBox1.Visible=true;
button1.Enabled=false;
thread.Start();
}
privatevoidResult()
{
boolok=this.Do();
this.BeginInvoke(newSystem.Threading.ThreadStart(delegate()
{
if(ok)MessageBox.Show("成功","提示");
elseMessageBox.Show("失败","提示");
pictureBox1.Visible=false;
button1.Enabled=true;
}));
}
privateboolDo()
{
System.Threading.Thread.Sleep(10000);
returntrue;
}
线程指的是操作系统能够调度和执行的最小单位,它是程序运行时执行的一个单一线程的逻辑流。线程之间可以共享内存资源,但每个线程有自己的执行堆栈和程序计数器。线程可以为程序提供并行化和多任务处理的能力。通过多线程编程,程序可以同时运行多个线程,从而实现并发执行和提高系统的效率。在日常开发中,我们通常使用线程来处理多任务、异步操作、UI交互和网络等一系列需要并发处理的操作。
通过使用合理的线程调度策略,我们可以更好地管理多线程程序,提高应用程序的性能和可维护性。
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!