|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.04.2013, 07:08 | #1 |
Регистрация: 04.05.2008
Сообщений: 6
|
Работа с потоками. На некоторых ПК один из потоков, в момент работы приложения, не просыпается
Вообщем обнаружилась такая проблема: есть приложение на С#, FW 4.0. При старте создается несколько потоков, после чего они приостанавливаются (...WaitOne(). По событию они должны проснуться... и тут начинается "непонятное". Если проект запущен из студии (с перекомпиляцией), то все работает отлично, потоки просыпаются. Но если сразу после этого запустить приложение просто через *.exe файл (Bin/Debag) , то один из потоков наотрез отказывается просыпаться. Такая "фигня" происходит на 3х ПК из 5ти. Если перезагрузить ПК, то приложение при первом запуске (речь о запуске через *.exe файл) отрабатывает нормально, а при последующих опять не просыпается один поток. FW переустанавливал, студию тоже... не знаю в чем может быть проблема. Рад буду выслушать ваши мнения и советы.
|
24.04.2013, 07:21 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Я понимаю что это разные процессы, и такого быть не должно, но чем дотнет не шутит... К тому же может разные версии дотнета стоят?
I'm learning to live...
|
|
24.04.2013, 07:42 | #3 | |
Регистрация: 04.05.2008
Сообщений: 6
|
Цитата:
схематично код выглядит как то так При запуске: создаем потоки класс 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. |
|
24.04.2013, 13:21 | #4 |
Регистрация: 04.05.2008
Сообщений: 6
|
тема закрыта, проблема решена. Ошибка в коде: не в том месте "взводился" разрешающий флажок для одного из потоков. А мистика в работе объяснялась быстродействие: на более медленных тачках, пока просыпался первый поток, "флажок для второго успевал взвестись. спасибо за участие.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
О некоторых правилах безопасной работы на компьютере. | Ал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 |