日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Winform-耗時操作導(dǎo)致界面渲染滯后

freeflydom
2025年2月7日 9:44 本文熱度 489

原因:
某些耗時操作阻塞了主線程。

理解上述原因,需先搞清楚Winform線程機(jī)制。主要有以下2點(diǎn)特性:1.單線程模型;2.依賴消息循環(huán)。
1.單線程模型
Winform 默認(rèn)是單線程。通常,所有的UI操作,包括控件更新、事件處理,都由主線程管理(也就是UI線程)。
任何在事件處理程序中運(yùn)行的代碼都會占用主線程。如果某個事件中有耗時很多的操作,就會阻塞線程。比如有時PictureBox.Image的顯示會滯后。
下面代碼中,pictureBox1的顯示會有滯后。背后的工作原理是:
“pictureBox1.Image = image0”運(yùn)行完成后,系統(tǒng)只是將 pictureBox1 的 Image 屬性更新,但不會立即觸發(fā)控件繪制。(實(shí)際的繪制操作是由消息循環(huán)處理的,在 WM_PAINT 消息中完成)
pictureBox1的屬性設(shè)置之后,如果緊接著有耗時操作占用UI線程,就會導(dǎo)致WM_PAINT無法及時處理,所以不能及時繪制。
最佳解決辦法:
避免在 UI 線程執(zhí)行耗時任務(wù)。將耗時任務(wù)移到后臺線程,可以確保 UI 線程始終空閑以處理消息循環(huán),比如使用 Task.Run 或 async/await。

private void button2_Click(object sender, EventArgs e)
{
    using (var session = new InferenceSession(_modelPath))
    {
        ......  // 無關(guān)代碼
        Bitmap image0 = new Bitmap(_imagePath);
        pictureBox1.Image = image0;
        // 以下是某耗時操作
        DenseTensor<float> inputTensor = PreprocessImage(image0);
        ......
    }
}

補(bǔ)充一點(diǎn):只有主線程可以訪問或更新控件;如果要從其他線程訪問、更新控件,要使用特定的線程間通訊,必須使用 Control.Invoke 或 Control.BeginInvoke 方法將操作封送到 UI 線程執(zhí)行。如果在后臺線程中得到某個變量,需要渲染到主界面,就需要用到Control.Invoke等方法。

2.依賴消息循環(huán)
UI線程依賴消息循環(huán)(Message Loop)處理用戶輸入、標(biāo)點(diǎn)擊等操作和系統(tǒng)消息。Application.Run 啟動時,UI線程進(jìn)入消息循環(huán)狀態(tài),不斷從消息隊(duì)列中提取消息并分發(fā)到對應(yīng)控件處理。上述提到的線程阻塞實(shí)際上是阻塞了消息循環(huán)。

上述2個特性明白之后,就能理解原因中提到的阻塞了。如果不理解,可以嘗試在pictureBox1.Image之后跟隨一個簡單的耗時操作幫助理解。

轉(zhuǎn)自https://www.cnblogs.com/snowoct/p/18690950


該文章在 2025/2/7 9:44:38 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 激情男女 | 日本最新一日本一二三区 | 国产日韩欧美综合一区 | 午夜男女羞羞爽爽爽视频 | 免费中文字幕不卡 | 亚洲国产一区二区三区 | 二区精品在线播放 | 一区二区在线观看 | 国产精品私密保养 | 狠狠狠狼鲁欧美综合网免费 | 在线视频直播 | 最快无弹窗小说阅读网 | 国产播放隔着超 | 欧美国产日韩一区二区三区综合视 | 8x8x精品一区二区 | 草莓视频成人 | 奇米色88欧美一区二区 | 99精品国产在热 | 国产精品视频第一区二区三区 | 天美传奇mv免费观看完整版 | 真人二十三式性视频(动) | 免费无毒a网站在线观看 | 国产高清视频一区免费观看 | 亚洲欧美日韩中文在线制服 | 亚洲综合娱乐在线视频 | 亚洲se在线播放 | 欧一美一性一交一乱一性一 | 亚洲中文字幕一二三区 | 中国字幕在线看韩国电影 | 午夜三级三级三点在线 | 亚洲日本中文字幕天堂网 | 中文字幕亚洲综合久 | 精品精品国产国产 | 欧美激情一区二区三区在线 | 人摸人人| 清纯唯美亚洲 | 日韩精品一区二区三区在线 | 欧美日本国 | 91po国产在| 影音先锋2025色资源网 | 亚洲一区二区三区下卡精品 |