我对 Windows Phone 7.1 API 有一个奇怪的问题。我正在尝试编写一个应用程序来从触摸屏发送 touch-delta 以在桌面 PC 上移动鼠标指针。我正在使用 UDP 套接字,但我有一些性能问题。
udp 消息的发送似乎每 0.5 秒左右冻结 0.5-1.0 秒。我没有发送大量数据,我也在限制它。我最近尝试找出导致它的原因有点出乎意料。
当有一个带有持续发送随机数据的while循环的单独线程时,一切工作顺利且正常。但是当我开始触摸 WP7-mobile 的屏幕时,我开始出现这些奇怪的问题。出于调试目的,我已经删除了触摸事件的所有侦听器,并且我在我的应用程序中没有做任何其他事情,然后在 UDP 套接字上发送这些数据。但是为什么当我在屏幕上移动手指时它会像这样冻结?这使得编写这样的应用程序变得不可能。
我听说触控操作应该移到一个专门的线程,那是包含在WP7.1的Beta2更新中的吗?
代码有点像这样:
new Thread(() =>
{
while (true)
{
_event.Reset();
_socket.SendToAsync(_args);
_event.WaitOne();
Thread.Sleep(5);
}
}).Start();
事件句柄在 SendToAsync 完成时设置。所以它大约每 5 毫秒发送一次 udp 数据。只要我不在手机屏幕上触摸和拖动手指,它就可以正常工作(我可以稳定快速地接收)。然后我开始定期冻结 1 秒。很奇怪,因为我在单独的线程上运行 udp 触发。手机的 CPU 在处理操作时是否以某种方式过载?这会导致打嗝吗?
更新
我已经在另一个线程中重新讨论并更新了这个问题,以使其更加清晰: