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