#c# #winforms #multithreading #delegates #asynchronous
#c# #winforms #многопоточность #делегаты #асинхронный
Вопрос:
У меня есть winform и соединение Bluetooth с кирпичом lego nxt. Теперь я хочу обновлять форму каждую секунду, чтобы считывать датчики или уровень заряда батареи. Но если я запускаю для этого новый поток, возникает исключение недопустимой операции потока, когда поток хочет задать текст метки.
Кто-нибудь может мне помочь?
Ответ №1:
Вы можете обновить метку только из потока, который ее создал, и, судя по всему, вы пытаетесь обновить ее из рабочего потока.
Взгляните на управление методом .BeginInvoke() и извлеките это оттуда. Существуют и другие методы, такие как Control.Завершение вызова и управления.Вызовите а также управление свойством .Требуется вызов, который также будет полезен в этом контексте.
Ответ №2:
вам нужно вызвать обновления ваших меток обратно в основной поток
смотрите Dispatcher.Вызвать
Комментарии:
1. Обратите внимание, что он находится в WinForm, а не на основе WPF.
2. Вы правы. Я пропустил это. Я уже некоторое время застрял в режиме Silverlight / WPF 🙂