我想在循环中手动引发application.idle事件。是否有可能在c#?
答案 0 :(得分:3)
Application.Idle事件由RaiseIdle()方法引发。你不能直接自己打电话,这是一种私人方法。从技术上讲,你可以使用Reflection来解决这个问题。
然而,这可能不会很好,Idle有一个非常具体的含义。当消息循环调度所有挂起的消息并且不再需要完成任何工作时,它会被引发。在循环中提高空闲没有意义,你没有闲着,你正在循环。应用程序在其空闲事件处理程序中执行的任何操作都不会对UI产生明显影响。就此而言,在循环中提升它也没有意义,应用程序不能多次闲置。
当你考虑编写这样的代码时,你可能真的在寻找Application.DoEvents()。
答案 1 :(得分:2)
您无法手动引发Application.Idle事件。
如果您的目标是在循环中继续处理消息,则可以在循环过程中经常调用Application.DoEvents(),但这不会导致引发Application.Idle事件。
如果您需要在循环中处理Idle事件,则可以在后台线程上运行循环,这将使UI保持响应。
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx