Как я могу обновить winform асинхронно? - PullRequest
1 голос
/ 12 августа 2010

У меня есть winform и соединение Bluetooth с кирпичом lego nxt. Теперь я хочу обновлять форму каждую секунду, чтобы прочитать датчики или уровень заряда батареи. Но если я для этого создаю новый поток, то возникает недопустимое исключение операции потока, когда поток хочет установить текст метки.

Кто-нибудь может мне помочь?

Ответы [ 2 ]

6 голосов
/ 12 августа 2010

Вы можете обновить метку только из потока, который ее создал, и, судя по всему, вы пытаетесь обновить ее из рабочего потока.

Посмотрите на метод Control.BeginInvoke() и возьми оттуда.Существуют и другие методы, такие как Control.EndInvoke и Control.Invoke , а также свойство Control.InvokeRequired , которые также будут полезны в этом контексте.

0 голосов
/ 12 августа 2010

вам нужно вызвать обновления ярлыка обратно в основной поток

см. Dispatcher.Invoke

...