2011-08-02 182 views
1

我有一個奇怪的Windows Phone 7.1 API問題。我試圖編寫一個應用程序,從觸摸屏發送觸摸三角洲移動鼠標指針在桌面PC上。我使用UDP套接字,但我有一些性能問題。觸控操作正在凍結我在Windows Phone 7.1(芒果)的udp發送

發送udp消息似乎每0.5秒左右凍結0.5-1.0秒。我不會發送大量的數據,並且我也調節它。我最近試圖找到導致它的原因有點意外。

當有一個單獨的線程與while循環,不斷髮送隨機數據一切工作順利和罰款。但是當我開始觸摸WP7手機的屏幕時,我開始變得奇怪的打嗝。爲了進行調試,我已經刪除了所有觸摸事件的監聽器,並且我沒有在我的應用中做任何其他事情,然後將這些數據發送到UDP套接字上。但是當我將手指放在屏幕上時,爲什麼會像這樣凍結?它使得寫這樣的應用程序變得不可能。

我聽說應該將觸摸操作移動到專用線程,是否包含在WP7.1的Beta2刷新中?

的代碼都有點這樣的:完成SendToAsync當

new Thread(() => 
    { 
     while (true) 
     { 
      _event.Reset(); 
      _socket.SendToAsync(_args); 
      _event.WaitOne(); 
      Thread.Sleep(5); 
     } 
    }).Start(); 

事件句柄設置。所以它每5毫秒就會一直髮送udp數據。它工作正常(我可以以穩定和快速的速度收到),只要我不觸摸並拖動我的手指在手機的屏幕上。然後,我開始每隔一段時間獲得一次凍結。很奇怪,因爲我在一個單獨的線程上運行udp-firing。處理操作時,手機的CPU是否以某種方式過載?那可能會導致打嗝嗎?


更新

我已經在另一個線程refrased和更新這個問題,使其多一點明確:

Poor UDP performance with Windows Phone 7.1 (Mango)

+0

[與三星Omnia 7與Windows Phone 7.1(芒果)性能不佳的UDP [可憐的UDP](http://stackoverflow.com/questions/6930977/poor-performance-of-udp-on-samsung-omnia- 7-with-windows-phone-7-1-mango) –

回答

1

一切都運行在UI線程,直到你推到另一個線程。我的大部分事件處理程序看起來像這樣

ThreadPool.QueueUserWorkItem(state => /* do stuff */); 

我有芒果b2和這是事實,一些東西已經被移出UI線程但這是不穩定的,很容易做到這一點吧。

+0

最奇怪的是,我已經在單獨的線程上運行我的udp-firing了。它只是一個持續發送隨機數據的while循環。直到我開始觸摸屏幕,它的狀態都很好。它真的很奇怪。 –

相關問題