C #: как обновить winform из потока? - PullRequest
0 голосов
/ 27 декабря 2010

Поток C # (Read ()) вызывает System.NotSupportedException, когда он пытается обновить winform на основе полученного содержимого. Полное сообщение об ошибке

Read () System.NotSupportedException: Сообщение об ошибке не может быть отображено потому что необязательный ресурс сборки содержащий его не может быть найден в Microsoft.AGL.Common.MISC.HandelAr () в System.Windows.Forms.ProgressBar._SetInfo () в System.Windows.Forms.ProgressBar.set_Value () в ... ProcessStatus () в ... Чтение ()

Среда построения / цели: Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE. Проблема записи в ProgressBar из потока? Если да, то каков правильный метод C # / winforms для обновления ProgressBar из потока? В этом приложении поток Read () является непрерывным: он запускается, когда приложение запускается и работает вечно.

void ProcessStatus(byte[] status)
{
    Status.Speed = status[5];
    var Speed = Status.Speed/GEAR_RATIO;
    Status.Speed = (int) Speed;
    progressBarSpeed.Value = Status.Speed;
    ...

Ответы [ 2 ]

4 голосов
/ 27 декабря 2010

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

Чтобы упростить жизнь, взгляните на некоторые из методов расширения, представленных здесь

2 голосов
/ 27 декабря 2010

Вам следует позвонить Control.BeginInvoke

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...