![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| kartoshkins |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 19.7.2009 Репутация: нет Всего: нет |
unit1:
как сделать в этой кнопке возможность остановки ,возобновления потока? нужно имненно в 1 кнопке,тк если выношу new:infected в раздел var юнита1 начинаються глюки непонятные |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Глюки все равно имеют объяснение. А если делать на первое нажатие создание и запуск потока, на второе - приостановка и т.д. то все равно нужно выносить переменную потока куда-нибудь (лучше наверное - в private секцию формы). Ибо после выхода из обработчика OnClick переменная потока "теряется" и new из первого клика <> new во втором клике (при втором клике в new будет мусор, который приведет к AV). Это сообщение отредактировал(а) kami - 30.8.2009, 14:35 |
|||
|
||||
| kartoshkins |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 19.7.2009 Репутация: нет Всего: нет |
почему виснет форма при запуске потока?
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Если переменная new будет в private секции формы, то это будет выглядеть примерно так:
только не забыть в OnClose или OnDestroy уничтожить поток. |
|||
|
||||
| kartoshkins |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 19.7.2009 Репутация: нет Всего: нет |
выдает ошибку [Error] Unit1.pas(22): Undeclared identifier: 'Infected'
вот как выглядит код:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,winsock, StdCtrls; <------ сюда не хочет вставляться пишет: [Fatal Error] Unit1.pas(7): Circular unit reference to 'Unit1' и еще.. я тут нашел примерчик полегче:
можно как-то останавливать возобновлять поток созданный через beginthread? Это сообщение отредактировал(а) kartoshkins - 30.8.2009, 14:46 |
||||
|
|||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
kartoshkins,
Поясни смысл использования дополнительного потока, если все, что в нем делается - идет через Synchronize, то есть в контексте основного потока. Получается, что дополнительный поток создается, но ничего кроме занимания ресурсов не делает. А чего ты хотел?
Это выполняется в основном потоке, потому что вызывается через Synchronize. 1. Ты не оставляешь никакого шанса приложению на выборку сообщений и их обработку, потому что основной поток бесконечно сидит в этом цикле. 2. Никакого толку от FreeOnTerminated нет, потому что цикл не предусматривает его обработку и выход оттуда. |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Более того, поток нужно останавливать не так.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| kartoshkins |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 19.7.2009 Репутация: нет Всего: нет |
В в моем проекте без потоков (unit1) есть следующие ф-ии и процедуры:
как я понимаю все это нужно перенести в unit2 с потоком,то что было в кнопке засунуть в Execute ? а что дальше? просто никак не могу разобраться в структуре потоков Это сообщение отредактировал(а) kartoshkins - 30.8.2009, 15:19 |
||||||
|
|||||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Попробуйте вдумчиво почитать Многопоточность - как это делается в Delphi.
Возможно вас также заинтересует Выполнение кода в потоке без выделения его в процедуру. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| kartoshkins |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 19.7.2009 Репутация: нет Всего: нет |
спасибо! то что надо) |
|||
|
||||
![]()
|
| Правила форума "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. |