|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.09.2010, 18:21 | #1 | ||
Форумчанин
Регистрация: 14.04.2010
Сообщений: 145
|
Потоки - Как сделать чтоб не предок ждал пока наследники подсчитают, а один наследник ждал другого?
Может кто нибудь подсказать\рассказать про потоки. Я взял пример из книги: Фленов М "Библия Delphi", немного изменил:
Цитата:
Цитата:
Поидеи он должен досчитывать до 200000 и выдавать сообщение: "asd"? но не получается, почему? Как сделать чтоб не предок ждал пока наследники подсчитают, а один наследник ждал другого наследника??? (и если их больше двух) Как сделать чтоб один поток выводил полученые результаты в один Edit, а второй поток в другой Edit? (Я понимаю что 2 потока выводят index в один Edit) |
||
20.09.2010, 18:53 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а вы что ждете то?
надо ждать по TThread.Handle , а не по адресу обьекта. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
20.09.2010, 19:12 | #3 |
Форумчанин
Регистрация: 14.04.2010
Сообщений: 145
|
Тогда я вообще ничего не пойму. В каком юните писать функцию писать нужно(WaitForMultipleObjects(2, @co, true, infinite)? можно примерчик???
|
20.09.2010, 19:19 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
20.09.2010, 19:58 | #5 |
Форумчанин
Регистрация: 14.04.2010
Сообщений: 145
|
Разницы я что то не увидел. точнее вообще никаких действий и комп не реагирует, а проц показывает что не загруженный
Я понял. Дело в тупике: SendMessage(Form1.Edit1.Handle, WM_SETTEXT, 0, Integer(PChar(IntToStr(index)))); 2 потока обращается одновременно в Edit1, а вот как исправить не знаю Последний раз редактировалось Stilet; 21.09.2010 в 14:47. |
21.09.2010, 14:41 | #6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
в классе потока вводим новое поле mshandle: HWnd; задаем ДО запуска, но после создания потока ему нужные значения кому form1.edit1.handle кому form1.edit2.Handle меняем вызов SendMessage(mshandle, WM_SETTEXT, 0, Integer(PChar(IntToStr(index))));
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 21.09.2010 в 14:46. |
|
21.09.2010, 19:12 | #7 |
Форумчанин
Регистрация: 14.04.2010
Сообщений: 145
|
А можно примерчик, я что то не догоняю
|
22.09.2010, 09:03 | #8 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
поток должен знать куда он пишет, иметь соответствующее поле.
в классе потока вводим новое поле type TmyThead=class(....) private mshandle: HWnd; ...... end; задаем ДО запуска, но после создания потока ему нужные значения кому form1.edit1.handle кому form1.edit2.Handle th1:=TmyThead.Create; th1.mshandle:=form1.edit2.handle; th2:=TmyThead.Create; th2.mshandle:=form1.edit1.handle; меняем вызов SendMessage(Form1.Edit1.Handle, WM_SETTEXT, 0, Integer(PChar(IntToStr(index)))); на такой SendMessage(self.mshandle, WM_SETTEXT, 0, Integer(PChar(IntToStr(index))));
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 22.09.2010 в 09:09. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать чтоб listbox показывал нумерацию? | blackstersl | Общие вопросы Delphi | 7 | 01.02.2009 14:28 |
Как вычесть один диапазон из другого? | viter.alex | Microsoft Office Excel | 11 | 20.01.2009 16:30 |
Как сделать, чтоб в ячейке ВЫБИРАЛОСЬ? | kristinafadeewa | Microsoft Office Excel | 12 | 27.10.2008 06:05 |
как сделать чтоб экселев. файл висел открытым на рабочем столе как афиша на заборе? | Мара | Помощь студентам | 6 | 24.07.2008 13:29 |
Как сделать чтоб картинки менялись? | Kaktys v tymane | Помощь студентам | 1 | 09.05.2008 00:53 |