Пауза при открытии меню
От: p1ague  
Дата: 19.12.05 06:01
Оценка:
Привествую все гуру программирования!

Интересует такой вопрос. При выполнении какой-либо процедуры в окне с главным меню происходит такая интересная вещь: во время выполнения нажимаю на любой пункт главного меню и все встает на паузу. Только ухожу из меню — все возобновляется. Пишу на Delphi 7. Что тут может быть? Всю голову уже сломал этим вопросом.
С уважением,
Антон.
Re: Пауза при открытии меню
От: p1ague  
Дата: 19.12.05 07:10
Оценка:
Здравствуйте, p1ague, Вы писали:

P>Привествую все гуру программирования!


P>Интересует такой вопрос. При выполнении какой-либо процедуры в окне с главным меню происходит такая интересная вещь: во время выполнения нажимаю на любой пункт главного меню и все встает на паузу. Только ухожу из меню — все возобновляется. Пишу на Delphi 7. Что тут может быть? Всю голову уже сломал этим вопросом.


Да, забыл указать. Процедура у меня в потоке. При этом, если занести ее в обычный таймер, то паузы не происходит.
С уважением,
Антон.
Re[2]: Пауза при открытии меню
От: HowardLovekraft  
Дата: 19.12.05 07:51
Оценка:
Здравствуйте, p1ague, Вы писали:

P>Здравствуйте, p1ague, Вы писали:


P>>Привествую все гуру программирования!


P>>Интересует такой вопрос. При выполнении какой-либо процедуры в окне с главным меню происходит такая интересная вещь: во время выполнения нажимаю на любой пункт главного меню и все встает на паузу. Только ухожу из меню — все возобновляется. Пишу на Delphi 7. Что тут может быть? Всю голову уже сломал этим вопросом.


P>Да, забыл указать. Процедура у меня в потоке. При этом, если занести ее в обычный таймер, то паузы не происходит.


Код приведи. Скорее всего, что-то намудрил с Synchronize.
Re[3]: Пауза при открытии меню
От: p1ague  
Дата: 19.12.05 08:21
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:

P>>>Интересует такой вопрос. При выполнении какой-либо процедуры в окне с главным меню происходит такая интересная вещь: во время выполнения нажимаю на любой пункт главного меню и все встает на паузу. Только ухожу из меню — все возобновляется. Пишу на Delphi 7. Что тут может быть? Всю голову уже сломал этим вопросом.

P>>Да, забыл указать. Процедура у меня в потоке. При этом, если занести ее в обычный таймер, то паузы не происходит.
HL>Код приведи. Скорее всего, что-то намудрил с Synchronize.

Поток находится в отдельной библиотеке (но это не суть важно).
Вызывается из основной программы так:

 Thrd.Create (False);


Затем идет Execute:

 Self.Priority := ReadPriority;
 Self.FreeOnTerminate := True;
 Synchronize(Start);
 Self.Terminate;


В Start уже идет сам процесс.

Ту же проблему я заметил при запуске процедуры Start из основного потока программы (по простому OnClick кнопки). Так что явно проблема не в синхронизации, а в чем-то другом... Причем в самоей процедуре проблем нет, все работает идеально. А вот если вызывать главное или контекстное меню во время работы процедуры, то все встает на "паузу"...
С уважением,
Антон.
Re[4]: Пауза при открытии меню
От: Аноним  
Дата: 19.12.05 09:36
Оценка:
Здравствуйте, p1ague, Вы писали:

P>Затем идет Execute:


P>
P> Self.Priority := ReadPriority;
P> Self.FreeOnTerminate := True;
P> Synchronize(Start);
P> Self.Terminate;
P>


P>В Start уже идет сам процесс.


Срочно читать справку по Synchronize. И смотреть исходники TThread.

P>Ту же проблему я заметил при запуске процедуры Start из основного потока программы (по простому OnClick кнопки). Так что явно проблема не в синхронизации, а в чем-то другом... Причем в самоей процедуре проблем нет, все работает идеально. А вот если вызывать главное или контекстное меню во время работы процедуры, то все встает на "паузу"...


Дело именно в синхронизации.
Re[4]: Пауза при открытии меню
От: HowardLovekraft  
Дата: 19.12.05 09:42
Оценка:
В догонку к предыдущему посту:

"Synchronize waits for the main thread to enter the message loop and then executes the passed method".

На мысли не наводит?
Re[5]: Пауза при открытии меню
От: p1ague  
Дата: 20.12.05 10:52
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:

HL>В догонку к предыдущему посту:


HL>"Synchronize waits for the main thread to enter the message loop and then executes the passed method".


HL>На мысли не наводит?


Наводит. Пошел перечитывать доку. Спасибо!
С уважением,
Антон.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.