日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Application.DoEvents

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Application.DoEvents 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

記得第一次使用Application.DoEvents()是為了在加載大量數據時能夠有一個數據加載的提示,不至于系統出現假死的現象,當時也沒有深入的去研究他的原理是怎樣的,結果在很多地方都用上了Application.DoEvents(),今天看到了關于這方面的一些文章,知道我以前有些用法是不當的,有些地方需要慎用

?

Application.DoEvents()。
首先我們先看看在循環比較大的程序中,它的作用還是不錯的,起到了一個實時響應的效果,例如:

?

for?(int?q?=?0;?q?<?1000000;?q++)
????????????
{
????????????????textBox1.Text?
=?q.ToString();
????????????????Application.DoEvents();//實時響應文本框中的值
????????????}

如果沒有加上 DoEvents的話,由于循環時間會比較久就會出現假死的狀態,而且程序不能處理其他的事件。而如果加上DoEvents的話就會對文本框的值實時響應,給用戶帶來較好的用戶體驗,可是DoEvents也帶來了效率上的問題,處理同樣的一個事件調用了DoEvents后效率降低了好幾倍,這也是為什么要慎用的原因了。下面是我做的一個測試:

????????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();//計算耗時
????????}


????????
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();//計算耗時
????????}


執行耗時對比:
從較大數據的循環中可以看出效率是很低的,所以如果能不調用DoEvents就盡量不用。也可以通過別的方法來處理的,例如多線程異步調用等。
MSDN中的定義:
當運行 ? Windows ? 窗體時,它將創建新窗體,然后該窗體等待處理事件。該窗體在每次處理事件時,均將處理與該事件關聯的所有代碼。所有其他事件在隊列中等待。在代碼處理事件時,應用程序并不響應。例如,當將另一窗口拖到該窗口前面時,該窗口不重新繪制。如果在代碼中調用 ? DoEvents,則您的應用程序可以處理其他事件。例如,如果您有向 ? ListBox?? 添加數據的窗體,并將 ? DoEvents ? 添加到代碼中,那么當將另一窗口拖到您的窗體上時,該窗體將重新繪制。如果從代碼中移除 ? DoEvents,那么在按鈕的單擊事件處理程序執行結束以前,您的窗體不會重新繪制。???
?通常,您在循環中使用該方法來處理消息。

轉載于:https://www.cnblogs.com/VOIP/archive/2010/12/08/1900497.html

總結

以上是生活随笔為你收集整理的Application.DoEvents的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。