|
Тема
|
freeze проблем
|
|
Автор |
trump (непознат) |
Публикувано | 22.05.05 11:56 |
|
Здравейте,
Имам следния проблем:
Докато се изпълнява някой цикъл, програмата "замръзва" и не обработва вход/изход.Как мога да го предотвратя?
| |
Тема
|
Re: freeze проблем
[re: trump]
|
|
Автор |
TRN (член) |
Публикувано | 22.05.05 12:42 |
|
Сложи в цикъла Application.ProcessMessages
| |
Тема
|
Re: freeze проблем
[re: TRN]
|
|
Автор |
ИвKo (особняк) |
Публикувано | 22.05.05 14:23 |
|
Абе аз като "на всяка манджа мерудия", ама ще ми простите може би...
Освен това препоръчително е, ако не искаш потребителя да ти затвори приложението, докато си в цикъла, и да се омажат нещата, да си инициализираш една глобална променлива, например FCanClose да бъде FALSE, и на събитието на формата OnCloseQuery да присвояваш CanClose:=FCanClose, а след цикъла, да правиш FCanClose:=True;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=FCanClose;
end;
Защото Application.ProcessMessages разрешава обработката на Windows съобщенията, и току виж, потребителя ти цъкнал някой бутон който не трябва.
| |
Тема
|
ПроцесМесидж, има тънкости, внимавай.
[re: trump]
|
|
Автор |
NikB (любопитен) |
Публикувано | 22.05.05 14:53 |
|
Ползването на процеснесидж е удобно, но освен със затварянето на вормата, трябва да го съобразиш и с други процеси, които не трябва да са паралени (или не могат да са реентрантни).
| |
Тема
|
Много Ви благодаря!
[re: trump]
|
|
Автор |
trump (непознат) |
Публикувано | 23.05.05 09:54 |
|
Много Ви благодаря!
| |
Тема
|
Re: freeze проблем
[re: ИвKo]
|
|
Автор |
Formal (незнаещ) |
Публикувано | 23.05.05 21:38 |
|
Приложението не може да се затвори, докато не е приключило обработването на всички събития. Следователно, ако процедурата с цикъла е събитие, изпълняващо се в отговор на съобщение (напр. OnClick), потребителят _не_ може да затвори приложението, докато не приключи процедурата. Така че това с флага за CanClose е излишно.
| |
Тема
|
Re: freeze проблем
[re: Formal]
|
|
Автор |
ИвKo (особняк) |
Публикувано | 24.05.05 08:26 |
|
Засрамен
| |
Тема
|
Re: freeze проблем
[re: trump]
|
|
Автор | Dark Dirk (Нерегистриран) |
Публикувано | 28.05.05 17:43 |
|
Ами изнеси цикъла в отделен thread.
И може да изпращаш информация за това до къде е стигал този thread с работата си към главния thread на програмата.
| |
|
|
|
|