Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Дополнительный поток и Exception в главном. Что будет?


Страницы:   1 2 3 4 5 6 7

Kolan ©   (2006-10-15 22:43:00) 

Здравствуйте,
 В программе есть доп поток. Что будет с доп. потоком если в гл. потоке произойдет Exception?


Kolan   (2006-10-16 00:37:00) [81]


> оттого и сумбур. %-)

Ну тебя. Ну не могу я понять...

Почему после Synchronize(SendPackage);доп поток чего-то ждет?
Вот передал он скрытому окну сообщение CM_EXECPROCи свой метод. И сё чего еще ждать?

Почему если в SendPackageисключение - обработанное, то с доп потоком что-то случается.


Leonid Troyanovsky   (2006-10-16 00:32:00) [82]


> Kolan ©   (16.10.06 00:23) [48]

> Вопрос: А если обрабатываются?


Без re-raise?
Тогда, как обычно, как будто их вовсе нет.

--
Regards, LVT.

PS
http://groups.google.com/group/fido7.ru.delphi/msg/d9a27ed6dbccaf7f


Ketmar   (2006-10-16 00:31:00) [83]

>[49] Kolan(c) 16-Oct-2006, 00:25
>Читать могу хоть сто раз. Пока не пойму на что обратить
>внимание не разберусь :(.
тогда заучи. чтобы даже во сне отбарабанивал. озарение само придёт. %-)

зыж это я засыпаю уже. вторые сутки. или третьи? оттого и сумбур. %-)


Kolan   (2006-10-16 00:25:00) [84]


> ну почитай ты генофонд, а? %-)

Читать могу хоть сто раз. Пока не пойму на что обратить внимание не разберусь :(.

PS
 Я знаю что я тупой. :)


Kolan   (2006-10-16 00:23:00) [85]


> Ну, если они не обрабатываются в том самом методе,
> то должны быть обработаны в потоке, вызвавшем Synchronize.
>

Так усвоил.

Однако, если в этом потоке возникла нужда в к.л. показе, то оный
должен быть, опять же, в Synchronize (но, видимо, в ином).

Тоже дошло.


> Ну, если они не обрабатываются в том самом методе,


Вопрос: А если обрабатываются?

Result := TPackage.Create;
  try
   SeparateHeaderAndUserDtaArrays(Package, Header, UserData);

  except
   Result.Free;
 end;


Ketmar   (2006-10-16 00:20:00) [86]

>[46] Kolan(c) 16-Oct-2006, 00:19
>Synchroonize. Ну как бы ... а что я должен был понять?
а я откуда знаю? %-)


Kolan   (2006-10-16 00:19:00) [87]


> ну почитай ты генофонд, а? %-)

Генофонд ниасилю. А вот Тейктеру и Пачеко перечитал про Synchroonize. Ну как бы ... а что я должен был понять?


Leonid Troyanovsky   (2006-10-16 00:17:00) [88]


> Kolan ©   (16.10.06 00:10) [43]

> > Показывать же надо через Synchronize.

> Ни че не пойму. В потоке исключения не возникают. Они возникают
> в методе, вызванном через Synchronize.

Ну, если они не обрабатываются в том самом методе,
то должны быть обработаны в потоке, вызвавшем Synchronize.
Однако, если в этом потоке возникла нужда в к.л. показе, то оный
должен быть, опять же, в Synchronize (но, видимо, в ином).

--
Regards, LVT.


Ketmar   (2006-10-16 00:12:00) [89]

>[43] Kolan(c) 16-Oct-2006, 00:10
ну почитай ты генофонд, а? %-)


Kolan   (2006-10-16 00:10:00) [90]


> Показывать же надо через Synchronize.

Ни че не пойму. В потоке исключения не возникают. Они возникают в методе, вызванном через Synchronize. Те так как вы говорите, а это приводит к [17]


Leonid Troyanovsky   (2006-10-16 00:07:00) [91]


> Kolan ©   (16.10.06 00:03) [41]

> Сейчас показываю для отладки.


Показывать же надо через Synchronize.

--
Regards, LVT.


Leonid Troyanovsky   (2006-10-16 00:03:00) [92]


> Percent   (15.10.06 23:58) [38]


Зря ты не регистрируешься.

Ну, ладно, иду спать.

--
Regards, LVT.


Kolan   (2006-10-16 00:03:00) [93]


> Ему и показывать-то ничего не надо, оказывается... "Показать
> сообщение - не цель" (С) Kolan

Да не цель, я по исключению что-то сделаю, отреагирую так сказать.
Сейчас показываю для отладки.


Kolan   (2006-10-16 00:02:00) [94]



> А зачем заводить?
> Первичный поток вполне справится с их обработкой.


> Бо, в большинстве это - показ исключения.

Ну и я так думал. Сдеал серию событий. И получилось что в итоге у меня в Synchronize(SendPackage);все нчиная от обработки пакета, до вычисления данных и рисования на чарте. Гы, и работает :) Если без исключений.

Так а как сделать в главном?


> вроде того.

Тогда в итоге в этом потоке "обработки" я все обработаю и через Synchronize вызову событие, которое приведет к рисованию на чарте. Это ничего?


Percent   (2006-10-15 23:58:00) [95]

в большинстве это - показ исключения.

Ему и показывать-то ничего не надо, оказывается... "Показать сообщение - не цель" (С) Kolan


Leonid Troyanovsky   (2006-10-15 23:56:00) [96]


> Kolan ©   (15.10.06 23:53) [34]

> Те завожу поток "Обработки". Когда происходит событие


А зачем заводить?
Первичный поток вполне справится с их обработкой.
Бо, в большинстве это - показ исключения.

--
Regards, LVT.


Kolan   (2006-10-15 23:56:00) [97]


> Тогда зачем генерить исключение?

Я неправильно выразился. Не с обработкой, а с прекращением выполнения SendPackage и отправкой сообщения о том что есть что обрабатывать


> что-то вы, барин, намудрили. может, перепроектировать, пока
> не поздно?

Да тут мудрить вроде нечего. Перепроектирую наверно но не много..

Этот TConnectionManager имеет 1 метод - послать и 1 событие-пришли данные. Оч. удобно, я его много где использовал...


Ketmar   (2006-10-15 23:54:00) [98]

вроде того.


Kolan   (2006-10-15 23:53:00) [99]


> поработаешь. завести ещё один поток. у потока тоже есть
> очередь сообщений. %-)

Только об этом подумал, тогда у меня вообще вся обработка будет в потоке, так?

Те завожу поток "Обработки". Когда происходит событие
procedure TConnectionManager.PackageReceivedEvent(Sender: TObject;
Package: array of Byte);

Я сохраняю пакетик и посылаю потоку сообщение, он берет пакет и делает свои дела.
Вроде нормально?
+ синхронизация.


Percent   (2006-10-15 23:52:00) [100]

Дальше TConnectionManager ничего не должно пойти, он должен сам справится с обработкой пакета....

Тогда зачем генерить исключение?


Страницы:   1 2 3 4 5 6 7

Наверх

Титульная страница Поиск, карта сайта Написать письмо