为何 在循环中加入了DoEvents,cpu依然占用100%

为什么 在循环中加入了DoEvents,cpu依然占用100%
环境vs2012, .net Farmework 4.0

新建一个工程,窗体代码如下

Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
                Do
                        Application.DoEvents()
                Loop
        End Sub
End Class


问题
为什么 在循环中加入了DoEvents,cpu依然占用100%

谢谢


如果我这个循环是为了检测一个值是否达到条件,达到条件则继续之后的代码.没达到条件则一直卡在这个循环中,应该如何写呢?
我当前的代码是这样的

Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
                Do
                        if (一个判断条件的表达式) then exit do
                        Application.DoEvents()
                Loop

                '这里是之后的代码
        End Sub
End Class



------解决方案--------------------
DoEvents应该是循环的间隙,处理下消息。所以CPU占有率还是很高。
------解决方案--------------------
Thread.Sleep(100)
------解决方案--------------------
引用:
试了一下   看来这样用才行

Application.DoEvents()
Thread.Sleep(1)



如果只用Application.DoEvents()无法降低CPU使用率
如果只用Thread.Sleep()界面会假死


这种费力气的事情,请新开一个线程去处理,并且在线程里适当Sleep,这样不会影响UI响应,数据处理完毕时,通过Dispatcher传回UI线程来进行显示。
------解决方案--------------------
引用:
Quote: 引用:

其实这里我就是在等待一个BackgroundWorker对象的线程结束


执行方法以前先将界面enable=false
然后等待
backgroundWorker1的RunWorkerCompleted,完成后 界面 enable=true

等待直到另一个线程结束后再继续后续动作,可使用线程中的WaitOne()方法。VS帮助当中有相关示例如下:

Public Class WaitOne

    Shared autoEvent As New AutoResetEvent(False)

    <MTAThread()> _
    Shared Sub Main()
        Console.WriteLine("Main starting.")

        ThreadPool.QueueUserWorkItem(AddressOf WorkMethod, autoEvent)

        ' Wait for work method to signal.
        autoEvent.WaitOne()
        Console.WriteLine("Work method signaled.")
        Console.WriteLine("Main ending.")
    End Sub

    Shared Sub WorkMethod(ByVal stateInfo As Object)
        Console.WriteLine("Work starting.")

        ' Simulate time spent working.
        Thread.Sleep(New Random().Next(100, 2000))

        ' Signal that work is finished.
        Console.WriteLine("Work ending.")
        CType(stateInfo, AutoResetEvent).Set()
    End Sub

End Class