2016 - 2024

感恩一路有你

winform跨线程访问控件 winform更新UI控件的时间过长导致假死?

浏览量:1779 时间:2021-03-12 12:58:47 作者:admin

winform更新UI控件的时间过长导致假死?

可以用多线程,委托创建控件的那个线程来更新控件就可以了。

if (dataGridView1.InvokeRequired) { //判断当前线程是否必须调用invoke来更新控件 dataGridView1.Invoke(new Action(() => { //委托创建控件的线程进行更新控件 dataGridView1.BackgroundColor = Color.Black//更新控件操作 }))}

请问目前做windows桌面应用程序,MFC、QT、C#哪个更好?

做windows桌面应用当然是c#。

c#是.net框架下主力语言,与windows系统的集成度很高,win7,win8,win10都自带.net框架,根本就不需要什么依赖,c#语言目前已经更新到8.0版本,采用vs来开发桌面程序简直太完美,不管是winform还是wpf这两个都是一二十年很成熟的桌面程序框架,拖拖控件就能开发,效率高。wpf自定义程度高,可以设计出精美的ui界面来,一点不输web界面,而且还有配套的bland设计器来辅助做ui界面。

目前winform,wpf这两个桌面框架都已经支出.netcore,这是一个新出的垮平台框架,所以我觉得做桌面开发c#是首选。

以上我的看法,大家有什么想法也可以一起讨论。

C#多线程与UI响应跨线程更新UI?

当然是自己添加消息映射了。将UI的句柄或窗口指针传递进线程,然后在线程中PostMessage(),UI的类中添加消息映射和消息处理函数。

C# winform多线程异步更新UI?

首先在窗体上放一个button和一个picturebox

(picturebox visible为false)这个多线程的目的是点击按钮后图片正常的运行,另一线程在睡眠10秒后在执行。

private void button1_Click(object sender, EventArgs e)

{

//开启线程

System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(this.Result))

pictureBox1.Visible = true

button1.Enabled = false

thread.Start()

}

private void Result()

{

bool ok = this.Do()

this.BeginInvoke(new System.Threading.ThreadStart(delegate()

{

if (ok) MessageBox.Show("成功", "提示")

else MessageBox.Show("失败", "提示")

pictureBox1.Visible = false

button1.Enabled = true

}))

}

private bool Do()

{

System.Threading.Thread.Sleep(10000)

return true

}

有人说WPF比winform强大很多,可为什么很少转的?

因为WPF学习成本高啊!首先XAML就需要你花费不少的时间学!然后就是Blend设计UI动画也需要学!后台代码也需要学!还有WPF的专属特性也要学啊!winform 相对来说入门简单!但是winform弊端很明显它是基于GDI绘图,如果电脑显卡不好!UI会非常卡!无法用的那种!如果显示器是高分屏那就更不用说了!直接凉凉!模糊看不清加UI延迟!要命!WPF现在已经支持.NetCore3.0了!还是很值得学习的!

那些说WPF不好的人都是不懂WPF的人!(我可以说门外汉吗?)

winform跨线程访问控件 winform异步更新界面 wpf ui框架

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。