My.Application.DoEvents 方法
更新:2007 年 11 月
處理目前在訊息佇列中的所有 Windows 訊息。
' Usage My.Application.DoEvents() ' Declaration Public Sub DoEvents()
備註
My.Application.DoEvents 方法可以讓您的應用程式在執行程式碼的同時,也能夠處理可能所引發的其他事件。My.Application.DoEvents 方法與 DoEvents 方法具有相同的行為。
當您執行 Windows Form 應用程式時會建立新表單,表示會等待處理事件。每一次表單處理事件時 (例如,按鈕點選),便會處理與該事件相關聯的所有程式碼。所有其他事件都會在佇列中等待。當您的程式碼在處理事件時,應用程式不會做出回應。例如,如果將其他視窗拖曳至頂端,不會重新繪製視窗。
如果您在程式碼中呼叫 My.Application.DoEvents,應用程式就可以處理其他事件。例如,如果程式碼將資料加入至迴圈 (Loop) 中的 ListBox,且會在迴圈的每個步驟之後呼叫 My.Application.DoEvents,則將其他視窗拖曳至該視窗上方時,便會重新繪製表單。如果從程式碼中移除 My.Application.DoEvents,則必須等到按鈕的點選事件處理常式完成執行之後,才會重新繪製表單。
您通常會在迴圈中使用此方法處理訊息。
注意事項: |
---|
My.Application.DoEvents 方法處理事件的方式和表單的方式不太一樣。使用多執行緒處理,讓表單直接處理事件。如需詳細資訊,請參閱 Visual Basic 中的多執行緒。 |
警告: |
---|
如果處理使用者介面 (UI) 事件的方法呼叫 My.Application.DoEvents 方法,則在它完成之前可能會重新輸入方法。發生這個狀況的原因是 My.Application.DoEvents 方法會處理 Windows 訊息,而 Windows 訊息會引發事件。 |
工作
下表列出包含 My.Application.DoEvents 方法的工作範例。
若要 |
請參閱 |
---|---|
忙碌時允許表單回應 UI 輸入 |
範例
這個範例使用 My.Application.DoEvents 方法,允許更新 TextBox1 的 UI。
Private Sub TestDoEvents()
For i As Integer = 0 To 10000
TextBox1.Text = i.ToString
My.Application.DoEvents()
Next
End Sub
這個程式碼所在的表單應該具有 TextBox1 元件,而這個元件具有 Text 屬性。
需求
命名空間:Microsoft.VisualBasic.ApplicationServices
類別︰WindowsFormsApplicationBase
組件:Visual Basic 執行階段程式庫 (在 Microsoft.VisualBasic.dll 中)
依專案類型的可用性
專案類型 |
是否可用 |
---|---|
Windows 應用程式 |
是 |
類別庫 |
否 |
主控台應用程式 |
否 |
Windows 控制項程式庫 |
否 |
Web 控制項程式庫 |
否 |
Windows 服務 |
否 |
網站 |
否 |
使用權限
下列使用權限可能為必要:
使用權限 |
描述 |
---|---|
控制存取檔案和資料夾的功能。關聯的列舉型別:Unrestricted。 |
|
控制與使用者介面和剪貼簿相關的使用權限。關聯的列舉型別:AllWindows。 |