Я создал приложение WinForms, которое использует BackgroundWorker. Методы в BackgroundWorer выводят сообщения в RichTextBox. Обработчик события _TextChanged прокручивается до конца RichTextBox.Исключение: (RPC_E_CANTCALLOUT_ININPUTSYNCCALL) при использовании приложения WinForms
Теперь проблема заключается в том, что я получаю
необработанное COMException: 0x8001010D (RPC_E_CANTCALLOUT_ININPUTSYNCCALL)
когда RichTextBox.ScrollToCaret() вызывается из обработчика события _TextChanged. В чем может быть проблема? Как решить эту проблему?
ли иметь доступ к RichTextBox непосредственно из BackgroundWorker? –
Доступ к элементам управления из другой нити, кроме потока пользовательского интерфейса, строго запрещен. Большинство элементов управления имеют явные проверки и будут вызывать исключение, когда оно обнаружит эту ситуацию, возможно, RichTextBox этого не делает. Вам необходимо маршалировать обработку richtextbox в потоке пользовательского интерфейса, используя 'Invoke' из вашего backgroundthread. См. Https://msdn.microsoft.com/en-us/library/ms171728%28v=vs.85%29.aspx –
@ LasseV.Karlsen: Да. RichTextBox обновляется с BackgroundWorker. Спасибо за ссылку. – CDP21