Когда я пытаюсь получить все запущенные процессы внутри обработчика событий мыши, он выдает исключение.
Прежде всего, я решил, что проблема остается, потому что я поставил ключевое слово async
перед обработчиком события мыши, но это было не так, поскольку исключение также выбрано для неасинхронных методов.
Я использую MouseKeyHook библиотеки.
Сообщение об исключении:ManagementObjectSearcher не работает в глобальном подключении
Additional information: Transition into COM context 0x1ac936a0 for this RuntimeCallableWrapper failed with the following error: An outgoing call cannot be made since the application is dispatching an input-synchronous call. (Exception from HRESULT: 0x8001010D (RPC_E_CANTCALLOUT_ININPUTSYNCCALL)).
Обработчик события, от которого я получаю все процессы:
private async void MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
List<ProcessInfo> allRunningProcesses = Logic.GetAllProcesses();
// ...
}
Получить все процессы с помощью ManagementObjectSearcher
:
public static List<ProcessInfo> GetAllProcesses()
{
using (var searcher = new ManagementObjectSearcher(wmiQueryString))
using (var results = searcher.Get()) // EXCEPTION THROWN!
{
// ...
}
}
Как вы можете видеть, исключение вызывается при вызове searcher.Get()
.
Примечание: Этот метод работает без проблем при использовании вне обработчика события мыши (MouseUp
).
Буду признателен за любые полезные советы и дополнительную информацию, если необходимо, спасибо.