五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 如何解決WinForm窗體顯示時(shí)黑屏或白屏反應(yīng)慢問題

如何解決WinForm窗體顯示時(shí)黑屏或白屏反應(yīng)慢問題

文章來源:365jz.com     點(diǎn)擊數(shù):1473    更新時(shí)間:2021-08-03 10:36   參與評(píng)論

WinForm窗體顯示時(shí),時(shí)不時(shí)黑屏或者白屏,反應(yīng)慢等問題的解決方案

網(wǎng)上有很多人說了各種解決方案,都無(wú)效,其根本原因是因?yàn)镻anel控件本身的問題,把Panel控件改成Control就可以了,親測(cè)有效

鑒于很多項(xiàng)目都運(yùn)行了很長(zhǎng)時(shí)間,只有Panel控件都改成Control最快的方式是在winform.Designer.cs文件里把Panel的聲明和創(chuàng)建都改成Control即可。

無(wú)效的解決方案1:

SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 雙緩沖

無(wú)效的解決方案2:

protected override CreateParams CreateParams
{
    get
    {
        CreateParams paras = base.CreateParams;
        paras.ExStyle |= 0x02000000;
        return paras;
    }
}

image.png

WinForm窗體在使用過程中如果因?yàn)槌绦虻却龝r(shí)間太久而導(dǎo)致窗體本身假死無(wú)法控制,會(huì)嚴(yán)重影響用戶的體驗(yàn),這種情況大多是UI線程被耗時(shí)長(zhǎng)的代碼操作占用所致,可以新開一個(gè)線程用來完成耗時(shí)長(zhǎng)的操作,然后再將結(jié)果返回到UI中呈現(xiàn),這樣就不會(huì)占用到UI線程了,也就不會(huì)假死了,涉及Control的更新需要用到BeginInvoke方法

private void button1_Click(object sender, EventArgs e)
{
    Thread t1 = new Thread(delegate ()
    {
        bu1_Click();
    }
    );
    t1.IsBackground = true; //當(dāng)主線程退出時(shí),后臺(tái)線程會(huì)被CLR調(diào)用Abort()來徹底終止程序
    t1.Start();}


 = =

Control.BeginInvoke函數(shù)內(nèi)的線程跟UI線程是同一個(gè)線程的,函數(shù)外的代碼所在進(jìn)程則是另一個(gè)t1進(jìn)程,所以異步在這里體現(xiàn)的是Control.BeginInvoke相對(duì)于t1線程的異步,并不是相對(duì)于UI線程的異步。


如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (1473人查看,0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)