| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > CreateThread и функция класса |
| Автор: ButtonOFF 2.5.2014, 17:50 | ||
| Объясните пожалуйста. Есть форма - главное окно. Необходимо создать поток через CreateThread и передать в качестве функции - функцию класса
Что я делаю не так? и как сделать так как хочется? |
| Автор: kami 2.5.2014, 21:28 |
| Как минимум - ThreadProc - это функция с результатом типа DWORD Добавлено через 2 минуты и 10 секунд Ну и, раз не используется BeginThread - надо бы самостоятельно выставить IsMultiThread:=True; |
| Автор: ButtonOFF 2.5.2014, 21:35 | ||
Можно поподробнее |
| Автор: kami 2.5.2014, 21:39 | ||
Понял, в чем был вопрос
Но это не отменяет предыдущего сказанного. Добавлено через 4 минуты и 45 секунд Попытаюсь. Емнип, IsMultiThread влияет на работу менеджера памяти, переключая его в какой-то специальный режим. BeginThread, помимо прочих действий, делает IsMultiThread = True. Если так уж надо использовать CreateThread, то надо самому выставить эту системную переменную. |
| Автор: ButtonOFF 2.5.2014, 21:47 | ||||
Хорошо задам по-другому немного вопрос. Можно ли запустить поток на выполнение функции из класса, как в моем примере, только что бы этот поток мог обращаться ко ВСЕМ объектам класса ?
Я так и не понял о чем речь...
|
| Автор: kami 2.5.2014, 21:54 |
Теперь я не понимаю, о чем речь:) Как это - ко всем объектам класса? Ко всем экземплярам этого класса? Или к полям одного экземпляра? Повторюсь: 1. WorkProc из процедуры сделать функцией, которая возвращает DWORD. 2. В FormCreate до вызова CreateThread написать IsMultiThread:=True; |
| Автор: ButtonOFF 3.5.2014, 09:50 | ||
kami, Ну вот в первом посте пример, если сделать так, но с поправкой
|
| Автор: ButtonOFF 3.5.2014, 18:46 |
| Сейчас именно этим и занимаюсь, основной бедой было вывести в главную форму результат выполнения потока, вот подумал может есть делегат какой-нибуть, типа как на шарпе |
| Автор: stanilar 5.5.2014, 09:32 | ||
У процедуры из WorkProc есть параметры, соответственно ничто не мешает передать весь объект или класс. |
| Автор: bems 7.5.2014, 03:51 |
| также у классовых методов тоже есть self, поэтому тебе нужен class static |