Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2013, 07:08   #1
Avol
 
Регистрация: 04.05.2008
Сообщений: 6
По умолчанию Работа с потоками. На некоторых ПК один из потоков, в момент работы приложения, не просыпается

Вообщем обнаружилась такая проблема: есть приложение на С#, FW 4.0. При старте создается несколько потоков, после чего они приостанавливаются (...WaitOne(). По событию они должны проснуться... и тут начинается "непонятное". Если проект запущен из студии (с перекомпиляцией), то все работает отлично, потоки просыпаются. Но если сразу после этого запустить приложение просто через *.exe файл (Bin/Debag) , то один из потоков наотрез отказывается просыпаться. Такая "фигня" происходит на 3х ПК из 5ти. Если перезагрузить ПК, то приложение при первом запуске (речь о запуске через *.exe файл) отрабатывает нормально, а при последующих опять не просыпается один поток. FW переустанавливал, студию тоже... не знаю в чем может быть проблема. Рад буду выслушать ваши мнения и советы.
Avol вне форума Ответить с цитированием
Старый 24.04.2013, 07:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
а при последующих опять не просыпается один поток
Такое вот еретичное предположение: Что если поток неверно завершается, и при последующем вызове создается не другой поток, а пытается активироваться тот что не завершился?
Я понимаю что это разные процессы, и такого быть не должно, но чем дотнет не шутит...
К тому же может разные версии дотнета стоят?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.04.2013, 07:42   #3
Avol
 
Регистрация: 04.05.2008
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что если поток неверно завершается, и при последующем вызове создается не другой поток, а пытается активироваться тот что не завершился?
новый поток не создается, пробуждается приостановленный поток. Суть то в другом. Почему при запуске через студию (F5 с перекомпиляцией всего проекта, состоящего из кучи подсистем) все отлично работает (потоки нормально просыпаются), а при запуске через *exe файл Bin/Debag один из потоков не просыпается... При чем что на некоторых компах норм работает в обоих случаях. (FrameWork одинаковые)

схематично код выглядит как то так
При запуске:
создаем потоки

класс 1:
private AutoResetEvent _autoEvent;
....
в конструкторе класс 1
_autoEvent=new AutoResetEvent(false);


класс 2
private AutoResetEvent _autoEvent;
...
в конструкторе класс 2
_autoEvent=new AutoResetEvent(false);

затем потоки приостанавливаются
_autoEvent.Reset();
_autoEvent.WaitOne();

при появлении события (а конкретнее, в очереди появляется объект для записи в БД)

будим потоки

сперва в классе 1
_autoEvent.Set();

затем в классе 2
_autoEvent.Set();

Последний раз редактировалось Stilet; 24.04.2013 в 09:43.
Avol вне форума Ответить с цитированием
Старый 24.04.2013, 13:21   #4
Avol
 
Регистрация: 04.05.2008
Сообщений: 6
По умолчанию

тема закрыта, проблема решена. Ошибка в коде: не в том месте "взводился" разрешающий флажок для одного из потоков. А мистика в работе объяснялась быстродействие: на более медленных тачках, пока просыпался первый поток, "флажок для второго успевал взвестись. спасибо за участие.
Avol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
О некоторых правилах безопасной работы на компьютере. Ал1234567 Безопасность, Шифрование 1 04.10.2012 18:05
Как программно отследить момент запуска другого приложения win7? mixaleon C# (си шарп) 13 06.08.2012 14:31
Один момент в создании таблицы в MySQL vedro-compota SQL, базы данных 5 14.09.2010 13:56
много потоков и один stringlist m.a.x.i.m Общие вопросы Delphi 1 09.01.2010 22:41
хотелось бы уточнить один момент... selestenka Помощь студентам 4 04.01.2009 20:14