2011-08-02 149 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循环。直到我开始触摸屏幕,它的状态都很好。它真的很奇怪。 –

相关问题