BackGroundWorker - перебор контролов контейнера

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Maitris
Постоялец
Постоялец
 
Сообщения: 656
Зарегистрирован: 02.03.2005 (Ср) 21:00
Откуда: Из другой цивилизации.

BackGroundWorker - перебор контролов контейнера

Сообщение Maitris » 02.07.2007 (Пн) 15:14

Имеется воркер, в коде которого перебираются контролы определенного контейнера, с целью изменения их свойств в зависимости от текста.
При первом запуске все проходит ок, в конце кода процедуры воркера стоит Console.WriteLine("Complete") и получаю "Complete".
Но, при следующей попытке MyBackGroundWorker.RunWorkerAsync получается что он IsBusy = True. Как может быть такое, ведь если процедура достигла конца, то должен быть его релиз?
Сделал то же самое напрямую работая с потоками, норма, но беспокоит то, что если там не происходит завершения, то вскоре программа упадет от недостатка ресурсов, вызванного незавершенными потоками.
----

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 02.07.2007 (Пн) 16:39

вывод в консоль об окончании поставь в СООТВЕТСТВУЮЩЕМ событии. Как минимум...
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 02.07.2007 (Пн) 16:55

Но, при следующей попытке MyBackGroundWorker.RunWorkerAsync получается что он IsBusy = True

если ты проверяешь значение этого свойства в обработчике DoWork, то так и должно быть.
И вообще непонятно что тебя тревожит и в каком месте. Нужен код.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Maitris
Постоялец
Постоялец
 
Сообщения: 656
Зарегистрирован: 02.03.2005 (Ср) 21:00
Откуда: Из другой цивилизации.

Сообщение Maitris » 02.07.2007 (Пн) 17:11

Nord777
Проверяю в том участке кода, откуда производится RunWorkerAsync.
Волнует то, что открытый поток не завершается, и не может быть запущен повторно.
----

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 02.07.2007 (Пн) 18:19

В процудуре DoWork создал и запустил новый поток в котором бесконечный цикл. При этом IsBusy = False. Прямо даже интересно стало как же ты так надругался над бедным вокером )))
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Maitris
Постоялец
Постоялец
 
Сообщения: 656
Зарегистрирован: 02.03.2005 (Ср) 21:00
Откуда: Из другой цивилизации.

Сообщение Maitris » 03.07.2007 (Вт) 14:58

Nord777 писал(а):В процудуре DoWork создал и запустил новый поток в котором бесконечный цикл.

Я не запускаю новых потоков в DoWork.
Запуск инициируется только в отдельном событии формы.
----

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 03.07.2007 (Вт) 15:11

В процудуре DoWork создал и запустил новый поток в котором бесконечный цикл


Это я попытался эмулировать твою проблему. К сожалению дальнешее обсуждение без кода - просто флуд.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

Сообщение student-uni » 20.10.2007 (Сб) 17:02

в конце кода процедуры воркера стоит Console.WriteLine("Complete") и получаю "Complete".


я бы смотрел не в конец процедуры а на событие "ВоркерОкончилРаботу"


Но, при следующей попытке MyBackGroundWorker.RunWorkerAsync получается что он IsBusy = True. Как может быть такое, ведь если процедура достигла конца, то должен быть его релиз?


а ты заново его инстанциируешь ?


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 102

    TopList