当前位置:编程学习 > C#/ASP.NET >>

求救:C#进程中的while(true)如何释放50%的CPU

在C#的某一个进程中,需要用到while(true){},可是这样cpu就是50%,如何在进程中使用这样死循环而不过分占用CPU呢?我考虑到线程异步调用,可是还是不能很好的解决。
private void ThreadProc() 
{
    while (true)
    {
        ....
        ....
    }
}

高手教我一下! --------------------编程问答-------------------- 我就经常写while(true),
关键是while(true)里面是怎么写的。 --------------------编程问答-------------------- 用Application.DoEvents();

while (true)
  {
          Application.DoEvents();
  }
--------------------编程问答-------------------- 优化里面的具体操作吧 --------------------编程问答-------------------- 我请教的就是,while(true)里面怎么和进程外面联系起来,使其不占用50%的CPU,考虑到进程挂起,外部异步消息调用在继续执行该进程,可是这样在出C++可以做到,C#我就伤脑筋了 --------------------编程问答--------------------
while (true)
{
    Application.DoEvents();
    Thread.Sleep(1);
}

看你里面怎么写才是重点 --------------------编程问答-------------------- 使用委托递归。死循环可以分解为无穷递归。分解成小函数来执行。 --------------------编程问答-------------------- Thread.Sleep(10); --------------------编程问答-------------------- Thread.Sleep(100000000000000); --------------------编程问答--------------------
引用 5 楼 cloudhsu 的回复:
C# code
while (true)
{
    Application.DoEvents();
    Thread.Sleep(1);
}

看你里面怎么写才是重点


我一般都开一个线程,然后加这一句 --------------------编程问答-------------------- Sleep()是不行了,影响程序运行,至于“使用委托递归。死循环可以分解为无穷递归。分解成小函数来执行。”可以考虑,谢谢,我试试。。。 --------------------编程问答-------------------- 无穷递归要溢出吧 --------------------编程问答-------------------- 用Idle吧


            Application.Idle += delegate
            {
                 //while里的代码
                 Console.WriteLine("CPU Idle");
            };
--------------------编程问答--------------------
引用 9 楼 yyd021 的回复:
引用 5 楼 cloudhsu 的回复:
C# code
while (true)
{
Application.DoEvents();
Thread.Sleep(1);
}

看你里面怎么写才是重点


我一般都开一个线程,然后加这一句
加Application.DoEvents();只会浪费时间。如果是主线程。还好些。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,