国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
C# 中TextBox 字符串過長 關(guān)于Application.DoEvents()
有間隔時(shí)間的寫入內(nèi)容時(shí),寫入代碼:
  Application.DoEvents();//實(shí)時(shí)響應(yīng)文本框中的值

可以參考:http://www.cnblogs.com/datong/archive/2008/04/06/1139216.html

記得第一次使用Application.DoEvents()是為了在加載大量數(shù)據(jù)時(shí)能夠有一個(gè)數(shù)據(jù)加載的提示,不至于系統(tǒng)出現(xiàn)假死的現(xiàn)象,當(dāng)時(shí)也沒有深入的去研究他的原理是怎樣的,結(jié)果在很多地方都用上了Application.DoEvents(),今天看到了關(guān)于這方面的一些文章,知道我以前有些用法是不當(dāng)?shù)?,有些地方需要慎?font face="Verdana">Application.DoEvents()。
首先我們先看看在循環(huán)比較大的程序中,它的作用還是不錯(cuò)的,起到了一個(gè)實(shí)時(shí)響應(yīng)的效果,例如:

for (int q = 0; q < 1000000; q++)
            
{
                textBox1.Text 
= q.ToString();
                Application.DoEvents();//實(shí)時(shí)響應(yīng)文本框中的值
            }
如果沒有加上 DoEvents的話,由于循環(huán)時(shí)間會(huì)比較久就會(huì)出現(xiàn)假死的狀態(tài),而且程序不能處理其他的事件。而如果加上DoEvents的話就會(huì)對文本框的值實(shí)時(shí)響應(yīng),給用戶帶來較好的用戶體驗(yàn),可是DoEvents也帶來了效率上的問題,處理同樣的一個(gè)事件調(diào)用了DoEvents后效率降低了好幾倍,這也是為什么要慎用的原因了。下面是我做的一個(gè)測試:
        private void button1_Click(object sender, EventArgs e)
        
{
            expendTime.start();
            
for (int q = 0; q < 100000; q++)
            
{
                textBox1.Text 
= q.ToString();
                Application.DoEvents();
            }

            label2.Text 
= expendTime.ComputerTime();//計(jì)算耗時(shí)
        }


        
private void button2_Click(object sender, EventArgs e)
        
{
            expendTime.start();
            
for (int q = 0; q < 100000; q++)
            
{
                textBox2.Text 
= q.ToString();
            }

            label3.Text 
= expendTime.ComputerTime();//計(jì)算耗時(shí)
        }

執(zhí)行耗時(shí)對比:

從較大數(shù)據(jù)的循環(huán)中可以看出效率是很低的,所以如果能不調(diào)用DoEvents就盡量不用。也可以通過別的方法來處理的,例如多線程異步調(diào)用等。
MSDN中的定義:
當(dāng)運(yùn)行   Windows   窗體時(shí),它將創(chuàng)建新窗體,然后該窗體等待處理事件。該窗體在每次處理事件時(shí),均將處理與該事件關(guān)聯(lián)的所有代碼。所有其他事件在隊(duì)列中等待。在代碼處理事件時(shí),應(yīng)用程序并不響應(yīng)。例如,當(dāng)將另一窗口拖到該窗口前面時(shí),該窗口不重新繪制。如果在代碼中調(diào)用   DoEvents,則您的應(yīng)用程序可以處理其他事件。例如,如果您有向   ListBox   添加數(shù)據(jù)的窗體,并將   DoEvents   添加到代碼中,那么當(dāng)將另一窗口拖到您的窗體上時(shí),該窗體將重新繪制。如果從代碼中移除   DoEvents,那么在按鈕的單擊事件處理程序執(zhí)行結(jié)束以前,您的窗體不會(huì)重新繪制。   
 通常,您在循環(huán)中使用該方法來處理消息。
具體可參考這里。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C#WinForm窗體之間的相互操作
VBA從零學(xué)習(xí)之15——初識(shí)對話框
EXCEL VBA登錄窗體設(shè)計(jì)
詳細(xì)講解如何用EXCEL制作登錄界面
.net如何實(shí)現(xiàn)頁面間的參數(shù)傳遞
VBA常用代碼解析(第五十六講)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服