C#UDP侦听器线程 - 不要使用while(true)来刻录CPU?

问题描述:

使用下面的代码,有没有更好的方法来建立一个UDP监听比while(true)Thread.Sleep(10)C#UDP侦听器线程 - 不要使用while(true)来刻录CPU?

public void Start() 
    { 
     socket.Bind(ip); 
     while (true) 
     { 
      data = new byte[1024]; 
      receivedDataLength = socket.ReceiveFrom(data, ref Remote); 
      raw = Encoding.ASCII.GetString(data, 0, receivedDataLength); 
      row = new LogRow(raw); 
      //Console.WriteLine(row.ClientIp); 
      row_queue.Enqueue(row); 
      Thread.Sleep(10); 
     } 
    } 

ReceiveFrom正在阻塞。线程将被暂停,直到数据到达。除非Socket处于非阻塞模式。

+0

你应该补充一点,因为'ReceiveFrom'被阻塞,所以不需要'Sleep'。 – 2011-04-06 15:08:51

+0

啊好吧,它必须是我的插入线程正在燃烧CPU。谢谢,我将放弃'睡眠'。 – 2011-04-06 15:12:49

+0

@凯尔布兰特♦是的,'Spleep'太过分了。在调试中运行应用程序,并在开始刻录时暂停调试并检查每个非滑动线程。 – Andrey 2011-04-06 15:34:19