2010-05-01 49 views

回答

2

您無法手動引發Application.Idle事件。

如果您的目標是在循環中繼續處理消息,則可以在循環過程中經常調用Application.DoEvents(),但這不會導致引發Application.Idle事件。

如果您需要在循環中處理空閒事件,則可以在後臺線程上運行循環,這將保持UI的響應。

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

3

的Application.Idle事件由RaiseIdle()方法提出。你不能直接調用它,這是一種私人方法。從技術上講,你可以使用反射來解決這個問題。

然而這樣做不太可能奏效,閒置有一個非常具體的含義。當消息循環發出所有待處理的消息並且不需要做更多的工作時會引發它。在循環中提高閒置沒有意義,你不是閒置,你在循環。應用程序在其空閒事件處理程序中採取的任何操作都不會對用戶界面產生明顯影響。對於這個問題,在一個循環中提升它也是沒有意義的,一個應用程序不能閒置一次以上。

當你考慮編寫這樣的代碼時,你可能真的在尋找Application.DoEvents()。