Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение свойств контрола из другого потока. progressBar1.Val = val from thread = er. 
V
    Опции темы
koreshX
  Дата 28.3.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Доброго времени суток!
В C# я новичок, так что заранее извиняюсь за, возможно, банальный вопрос. Есть следующий класс, в который передаётся форма (оговорюсь, делается под PocketPC 2003):

Код

class MyThread
    {
        private Thread BaseThread;
        private Form1 RemoteForm; 

        public MyThread(Form1 ControlForm)
        {
            RemoteForm = ControlForm;
            BaseThread = new Thread(new ThreadStart(this.run));
            BaseThread.Start();            
        }

        void run()
        {            
            Random myRand = new Random();
            
            for (int i = 1; i < 100; i++)
            {
                int val = (int)Math.Round(100 * myRand.NextDouble());
                lock (RemoteForm)
                {
                    RemoteForm.progressBar1.Value = val;
                }
                Thread.Sleep(100);
            }
        }

    }

Так вот в чём проблема: даже если убрать цикл и поставить просто присваивание значения, то получаю неизвестное исключение, в его комментах пишет "Control.Invoke must be used to interact with controls created on a separate thread.". Как решить пока не разобрался. А теперь самое интересное - запускаю приложение сделанное в режиме "release" на "большом" компьютере -  всё работает с любым количеством потоков. А запускаю на карманнике - моментально вылет с неизвестной ошибкой...
Может кто знает как с этим разобраться?
Заранее спасибо за помощь.
PM MAIL   Вверх
altarvic
Дата 29.3.2007, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 2.3.2007

Репутация: 1
Всего: 1



дык, тебе же уже система написала - используй Control.Invoke
вообще напрямую изменять свойства контролов разрешается только из потоков их создавших
PM MAIL   Вверх
HalkaR
Дата 29.3.2007, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 14
Всего: 42



koreshX, в следующий раз, когда будешь задавать вопрос сначала воспользуйся поиском. Данный вопрос задавался уже раз 10.
PM MAIL   Вверх
xess
Дата 6.4.2007, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 9.3.2007

Репутация: нет
Всего: нет



Цитата(HalkaR @ 29.3.2007,  09:49)
koreshX, в следующий раз, когда будешь задавать вопрос сначала воспользуйся поиском. Данный вопрос задавался уже раз 10.

Понял  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.