winform跨線程訪問控件 winform更新UI控件的時(shí)間過長(zhǎng)導(dǎo)致假死?
winform更新UI控件的時(shí)間過長(zhǎng)導(dǎo)致假死?可以用多線程,委托創(chuàng)建控件的那個(gè)線程來更新控件就可以了。if (dataGridView1.InvokeRequired) { //判斷當(dāng)前線程是否必須調(diào)
winform更新UI控件的時(shí)間過長(zhǎng)導(dǎo)致假死?
可以用多線程,委托創(chuàng)建控件的那個(gè)線程來更新控件就可以了。
if (dataGridView1.InvokeRequired) { //判斷當(dāng)前線程是否必須調(diào)用invoke來更新控件 dataGridView1.Invoke(new Action(() => { //委托創(chuàng)建控件的線程進(jìn)行更新控件 dataGridView1.BackgroundColor = Color.Black//更新控件操作 }))}
請(qǐng)問目前做windows桌面應(yīng)用程序,MFC、QT、C#哪個(gè)更好?
做windows桌面應(yīng)用當(dāng)然是c#。
c#是.net框架下主力語言,與windows系統(tǒng)的集成度很高,win7,win8,win10都自帶.net框架,根本就不需要什么依賴,c#語言目前已經(jīng)更新到8.0版本,采用vs來開發(fā)桌面程序簡(jiǎn)直太完美,不管是winform還是wpf這兩個(gè)都是一二十年很成熟的桌面程序框架,拖拖控件就能開發(fā),效率高。wpf自定義程度高,可以設(shè)計(jì)出精美的ui界面來,一點(diǎn)不輸web界面,而且還有配套的bland設(shè)計(jì)器來輔助做ui界面。
目前winform,wpf這兩個(gè)桌面框架都已經(jīng)支出.netcore,這是一個(gè)新出的垮平臺(tái)框架,所以我覺得做桌面開發(fā)c#是首選。
以上我的看法,大家有什么想法也可以一起討論。
C#多線程與UI響應(yīng)跨線程更新UI?
當(dāng)然是自己添加消息映射了。將UI的句柄或窗口指針傳遞進(jìn)線程,然后在線程中PostMessage(),UI的類中添加消息映射和消息處理函數(shù)。
C# winform多線程異步更新UI?
首先在窗體上放一個(gè)button和一個(gè)picturebox
(picturebox visible為false)這個(gè)多線程的目的是點(diǎn)擊按鈕后圖片正常的運(yùn)行,另一線程在睡眠10秒后在執(zhí)行。
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強(qiáng)大很多,可為什么很少轉(zhuǎn)的?
因?yàn)閃PF學(xué)習(xí)成本高啊!首先XAML就需要你花費(fèi)不少的時(shí)間學(xué)!然后就是Blend設(shè)計(jì)UI動(dòng)畫也需要學(xué)!后臺(tái)代碼也需要學(xué)!還有WPF的專屬特性也要學(xué)??!winform 相對(duì)來說入門簡(jiǎn)單!但是winform弊端很明顯它是基于GDI繪圖,如果電腦顯卡不好!UI會(huì)非常卡!無法用的那種!如果顯示器是高分屏那就更不用說了!直接涼涼!模糊看不清加UI延遲!要命!WPF現(xiàn)在已經(jīng)支持.NetCore3.0了!還是很值得學(xué)習(xí)的!
那些說WPF不好的人都是不懂WPF的人?。ㄎ铱梢哉f門外漢嗎?)