Запустите любое приложение WPF на компьютере, который в настоящее время имеет высокий уровень использования ЦП, если вы одновременно подключаете и отсоединяете планшетное устройство USB HID, приложения WPF перестают отвечать на прикосновения и реагируют только на мышь.
Требования:
- Запустите любое приложение WPF
- Храните подключаемые устройства и отсоединяйте планшеты USB HID
- Повысить эффективность использования ЦП
Мой вопрос:
Есть ли какой-либо тщательный способ для разработчиков, не являющихся разработчиками Microsoft, для устранения этого неполадки при прикосновении?
Я опубликовал предварительный анализ проблемы с прикосновением здесь:
Эта статья немного длинна для StackOverflow, поэтому я только упоминаю некоторые выводы здесь:
- Может быть
GetPenEventMultiple
дляGetPenEventMultiple
размещенная ниже. - В
GetTabletInfoHelper
могут возникнуть другие проблемы безопасности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.