![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Ak47black |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Здравствуйте.
Я столкнулся со следущей ситуацией и не знаю как тут поступить. Делаю поток и хочу из потока вызвать MessageBox и после этого сразу-же остановить поток. Вот такой у меня получился тестовый код
и код потока
Ошибка при нажатие кнопки
Я как понимаю что тут изза того что нету синхронизации. Synchronize я сделать немогу по причине что из того что я не смогу оттуда вызвать Suspend, а отдельно от вызова FTestProc тоже немогу сделать. Подскажите как-бы мне тут избежать ошибки? Присоединённый файл ( Кол-во скачиваний: 3 )
V.rar 10,21 Kb |
||||||
|
|||||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
это из-за того, что ты vcl юзаешь(ShowMessage) из неосновного потока. если, скажем, заменишь на ::MessageBox(0,MessText.c_str(),"blabla",0), то все будет ок. не совсем понятно, зачем выносить код, выполняющийся в рабочем потоке, в метод формы... ну это бывает. но торможение потока изнутри потока... |
|||
|
||||
| Ak47black |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Пардон Я хотел сказать, что если вызвать Suspend из процедуры которая была вызвана с помошью Synchronize(), то она небудет работать.
У делаю рекурсивный поиск с возможностью остановки и возобновлением, а этот код который тут выложил отражает судь ошибки.
Да так есть, только как заюзать его без Synchronize и не получить ошибки? |
||||||
|
|||||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Если на паскале то будет так MessageBox(0, 'Text', 'Caption', 0); MessageBox - это апи функция, которая не связана общим ресурсом с формой потому работает безо всякой синхронизации. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Но ошибка возникает.
А какие способы кроме Synchronize() еше есть? Это сообщение отредактировал(а) Ak47black - 4.10.2007, 17:57 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Значит она связана с чем-то другим. Покажи свой код с MessageBox. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
а зачем потоку, который занимается поиском, что-то пользователю показывать?! не отдать ли это на откуп осн.потоку?
я бы пересмотрел подход, а не извращенствами занимался) Это сообщение отредактировал(а) MetalFan - 4.10.2007, 18:11 -------------------- There are always someone smarter than you... |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Alexeis, в прикрепленном файле 1 пост исходник с MessageBoxом.
Добавлено через 1 минуту и 52 секунды
А это примерно как? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Ak47black, еще раз скажу MessageBox и ShowMessage это не одно и тоже. В прикрепленном проекте используется ShowMessage, а не MessageBox.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Alexeis, ок. Понял. Сорри я спутал.
Я решил эту проблему вот таким путем, вынес в главный поток
Извиняюсь что создал эту тему. Спасибо всем кто участвовал. Это сообщение отредактировал(а) Ak47black - 4.10.2007, 19:38 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |