Подтвердить что ты не робот

Приложения WPF перестают отвечать на прикосновения после добавления или удаления планшетных устройств

Запустите любое приложение WPF на компьютере, который в настоящее время имеет высокий уровень использования ЦП, если вы одновременно подключаете и отсоединяете планшетное устройство USB HID, приложения WPF перестают отвечать на прикосновения и реагируют только на мышь.

Требования:

  1. Запустите любое приложение WPF
  2. Храните подключаемые устройства и отсоединяйте планшеты USB HID
  3. Повысить эффективность использования ЦП

Мой вопрос:

Есть ли какой-либо тщательный способ для разработчиков, не являющихся разработчиками 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.
4b9b3361