偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

關(guān)于C#時間控件的提問與解答

開發(fā) 后端
本文將就C#時間控件監(jiān)聽UDP數(shù)據(jù)時,界面沒有響應(yīng)來討論,作者提出疑問,由專家來進行解答。其中涉及UDP超時屬性。

提問

為什么我用C#時間控件監(jiān)聽UDP數(shù)據(jù)時,界面是沒有響應(yīng)了呢?

我thread的線程就可以!

監(jiān)聽方法如下:

  1. IPEndPoint pp=new IPEndPoint(IPAddress.Parse("127.0.0.1"),12345);  
  2. UdpClient udp1=new UdpClient(pp);  
  3. while(true)  
  4. {  
  5.      IPEndPoint p=null;  
  6.      this.textBox2.Text=new UTF8Encoding().GetString(udp1.Receive(ref p));  
  7.    } 

解答

如果你用了TIMER控件并在里面加了上述方法,會出現(xiàn)這樣的情況:
(假設(shè)你的TIMER的interval屬性是1000,你的UDP的TIMEOUT是2000……)

TIMER被觸發(fā)……

執(zhí)行到了udp1.Receive(ref p));……

由于Receive是個同步等待的方法,程序會wait……

udp的超時是2000,但是到了1000ms后TIMER又一次被觸發(fā),結(jié)果就是udp1尚在等待Receive結(jié)束,你又調(diào)用了它一次= =

而正是因為Receive方法是同步等待的,所以你在Thread里運行時一次Receive沒結(jié)束是一定不會跳回"while(true)"去再Recieve一次滴

C#時間控件監(jiān)聽超時的解決方法:

1.丟到你自己的線程里去,不要用timer;

2.把udp的超時屬性改的比timer的interval短

【編輯推薦】

  1. C#析構(gòu)函數(shù)和構(gòu)造函數(shù)的用法
  2. C#日期格式化的幾種處理方法
  3. 淺談C#泛型的用處
  4. 淺談C#如何實現(xiàn)多繼承
  5. C#實用基礎(chǔ)教程
責(zé)任編輯:彭凡 來源: 百度知道
相關(guān)推薦

2009-08-17 17:08:47

C#轉(zhuǎn)義

2009-08-06 18:31:57

C#相對路徑絕對路徑

2009-08-05 17:15:27

C#自定義按鈕

2009-07-31 14:47:22

JavaScript函C#

2009-08-12 16:01:32

C#動態(tài)改變數(shù)據(jù)

2010-06-12 11:19:59

MySQL中文亂碼

2009-08-03 11:37:36

C#日期時間控件

2011-05-20 16:07:29

C#

2009-08-06 16:05:09

GridView控件

2010-05-10 14:05:31

負載均衡器

2009-08-19 11:21:02

C# ListBox控

2009-08-24 11:23:41

C# TimeLabe

2009-08-18 17:41:22

C# ListView

2009-08-11 14:45:41

C# DataGrid

2009-08-21 16:32:41

C#空格表示

2009-08-26 17:28:48

C# DateTime

2009-08-11 15:46:15

C#日歷控件

2009-07-31 13:48:09

C#時間轉(zhuǎn)換

2009-08-19 15:30:40

C#復(fù)合控件構(gòu)建

2009-08-21 17:55:52

C#復(fù)合控件
點贊
收藏

51CTO技術(shù)棧公眾號