0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 18
|
||||||
1 | ||||||
Управление потоками из разных процедур19.05.2012, 20:25. Показов 2736. Ответов 15
Метки нет (Все метки)
Всем привет!
Такая вот незадача получилась: У меня есть несколько процедур. В одной из них у меня есть try и catch. Ну а другая - просто (грубо говоря =) Так вот. Мне как то нужно управлять одним потоком из разных функций. Т.е. из моих двух существующих. А вот как это сделать? P. S.: все процедуры лежат в одном namespace. А вот примерный код (как и где нужно управлять):
Уже чего только не перепробывал. Да и документацию читал - но почему то ничего не нашел. Заранее всем спасибо!
0
|
19.05.2012, 20:25 | |
Ответы с готовыми решениями:
15
Управление потоками Управление потоками Управление процессами и потоками Управление потоками в многопоточности |
19 / 19 / 1
Регистрация: 16.09.2010
Сообщений: 100
|
|
19.05.2012, 23:11 | 2 |
merussaid, скинь пример того как ты сам пытался эту задачу разрешить, потому как не очень ясно что нужно сделать.
"Прекращение потока" это значит нужно остановить поток (чтобы потом запустить) или полностью уничтожить? и скинь полный код этих функций, может что прояснится.
0
|
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
|
|
20.05.2012, 06:05 | 3 |
да пример бы не помешал а то мне кажется что ты пытаешся создать поток и потом чтоб он сам себя уничтожил
0
|
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 18
|
||||||
20.05.2012, 08:31 [ТС] | 4 | |||||
Может быть я что-то из области фантастики там написал, но все же)) Теперь объясню: дело в том, что функция MyRequest() время от времени возвращает ошибку 500 (эта функция находится в другом файле dll и ей я управлять не могу). И эту ошибку и ловит catch. Так вот что мне нужно: чтобы если ошибки 500 нет - процедура завершила себя (т.е. убила поток). Если же она есть - повторить функцию startRec() заново. Надеюсь на помощь)
0
|
19 / 19 / 1
Регистрация: 16.09.2010
Сообщений: 100
|
||||||
20.05.2012, 11:07 | 5 | |||||
Поток такая вещь, что если больше нечего выполнять то он сам наилучшим образом завершится. Если блок try не отловит экзепшн, то поток завершится оператором return (если не поставить return все равно завершится). Если экзепшн отловили, то функция startRec() вызовет саму себя, тем самым вновь пытаясь осуществить запрос.
0
|
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 18
|
|
20.05.2012, 11:18 [ТС] | 6 |
ЦеЗарЬ, спасибо. Но вот возникла проблема - не могу вывести информацию в лейбл.
"Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label3' не из того потока, в котором он был создан."
0
|
19 / 19 / 1
Регистрация: 16.09.2010
Сообщений: 100
|
||||||
20.05.2012, 12:00 | 8 | |||||
1
|
20.05.2012, 12:04 | 9 |
Сделай вообще события. Типа начало запроса, запрос завершён. Подписывайся на них и в обработчике уже меняй значения там где это нужно. Как бы сделай класс не зависящий от формы вообще никак.
0
|
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 18
|
|
20.05.2012, 12:16 [ТС] | 10 |
ЦеЗарЬ, ну вроде пока все нормально)
Ну и наверное последний вопрос - а почему функция UpdateLabel3() не работает, если её вызывать из другого класса?
0
|
19 / 19 / 1
Регистрация: 16.09.2010
Сообщений: 100
|
|
20.05.2012, 12:26 | 11 |
0
|
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 18
|
|
20.05.2012, 12:29 [ТС] | 12 |
Хм)) Уже давно public =)
Даже уже в дизайнере изменил private label3 на public label3 - никакого результата. К сожалению...
0
|
19 / 19 / 1
Регистрация: 16.09.2010
Сообщений: 100
|
|
20.05.2012, 12:36 | 13 |
merussaid, программа выдает какую то ошибку, или просто ничего не происходит? скинь код как ты обращаешься к этой функции.
0
|
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 18
|
||||||
20.05.2012, 12:39 [ТС] | 14 | |||||
ЦеЗарЬ, нет. Программа ничего не выдает. Просто не выводится результат.
Вот 2 примера как я пользовался:
0
|
19 / 19 / 1
Регистрация: 16.09.2010
Сообщений: 100
|
|||||||||||
20.05.2012, 12:45 | 15 | ||||||||||
ты создаешь новую (другую форму) и уже в ней это делаешь. а нужно обращаться к той что у тебя уже есть.
объявляем публичную форму в классе:
2
|
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 18
|
|
20.05.2012, 12:50 [ТС] | 16 |
ЦеЗарЬ, спасибо огромное!))
0
|
20.05.2012, 12:50 | |
20.05.2012, 12:50 | |
Помогаю со студенческими работами здесь
16
Затраты на управление потоками Управление процессами и потоками Удаленное управление потоками Управление потоками на простом примере Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |