在当前CPU使用率较高的计算机上运行任何WPF应用程序,如果您同时保持插拔USB HID平板电脑设备的性能,则WPF应用程序将停止响应触摸,而仅响应鼠标。 / p>
要求:
我的问题:
非Microsoft开发人员是否可以为我们提供彻底的方法来解决此触摸故障?
我在此处发布了对触摸失败的初步分析:
这篇文章对于StackOverflow来说有点长,所以我在这里只提一些结论:
GetPenEventMultiple
可能会陷入僵局。GetTabletInfoHelper
可能还有其他线程安全问题。下面的代码来自.NET Framework,为了简化理解,我对其进行了简化:
// PenThreadWorker.ThreadProc
while(There are two loops in real)
{
// The `break` below only exit one loop, not two.
if (this._handles.Length == 1)
{
if (!GetPenEvent(this._handles[0], otherArgs))
{
break;
}
}
else if (!GetPenEventMultiple(this._handles, otherArgs))
{
break;
}
// Other logics.
}
// WorkerOperationGetTabletsInfo.OnDoWork
try
{
_tabletDeviceInfo = PenThreadWorker.GetTabletInfoHelper(pimcTablet);
}
catch(COMException)
{
_tabletDevicesInfo = new TabletDeviceInfo[0];
}
catch(ArgumentException)
{
_tabletDevicesInfo = new TabletDeviceInfo[0];
}
// Other exception handling.
答案 0 :(得分:1)
如果反复连接和断开硬件设备,则操作系统最终将因资源使用而崩溃,陷入瘫痪或损坏内存。
建议您将WPF桌面应用程序更改为不执行任何操作,直到用户连接平板电脑并单击WPF桌面应用程序中的按钮以启用“启用平板电脑”。
否则,您会收到一些USB电缆损坏的用户,反复连接和断开平板电脑。
操作系统将无法像处理磁盘控制器一样处理设备。