Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Замена к функции Sleep() чтобы программа не зависал.

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 21.04.2012, 09:12   #1
-= Мастер Света =-
 Пехотинец
Аватар для rufat2005
 
rufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауру
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Отправить сообщение для rufat2005 с помощью ICQ Отправить сообщение для rufat2005 с помощью Skype™
 
Smile Замена к функции Sleep() чтобы программа не зависал.

Изначально как начинающий программист я в своём боте начал использовать функцию Sleep() между открытием коробок, выбросом , точкой вещей.
Но в момент паузы функции Sleep() окно программы зависало, что как говорится не приятно.
Покопался в сети и нашол решении этой проблемы.
Думал может быть кому пригодится.

Код:
    Procedure Delay(mSec:Cardinal);
    Var
      TargetTime:Cardinal;
    Begin
      TargetTime:=GetTickCount+mSec;
      While TargetTime>GetTickCount Do
        begin
            Application.ProcessMessages;
            Sleep(1);
            If Application.Terminated then Exit;
        end;
    End;
теперь вместо функции Sleep() используем Delay() и программа не будет зависать. Покра не мере я только что у себя проверил!

Источник [Ссылки могут видеть только зарегистрированные пользователи. ]
Тыкни спасибо если помог.
________________
PWA for PWPVP
Автор программы PwRuf - Bot и PwRuf - Crafter
  Ответить с цитированием
Пользователь сказал cпасибо:
NebesaBag (31.05.2013)
Старый 21.04.2012, 09:29   #2
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Замена к функции Sleep() чтобы программа не зависал.

Очевидно же, что Sleep приостанавливает работу потока, в котором выполняется, а поскольку вы все действия выполняете в потоке GUI, то и ваш GUI будет зависать от этого.
Все ресурсоёмкие действия следует выполнять в отдельном потоке.
  Ответить с цитированием
Старый 21.04.2012, 09:36   #3
-= Мастер Света =-
 Пехотинец
Аватар для rufat2005
 
rufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауру
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Отправить сообщение для rufat2005 с помощью ICQ Отправить сообщение для rufat2005 с помощью Skype™
 
По умолчанию Re: Замена к функции Sleep() чтобы программа не зависал.

Да изначально я этого не знал.
________________
PWA for PWPVP
Автор программы PwRuf - Bot и PwRuf - Crafter
  Ответить с цитированием
Пользователь сказал cпасибо:
NebesaBag (31.05.2013)
Старый 21.04.2012, 10:53   #4
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Замена к функции Sleep() чтобы программа не зависал.

Цитата:
Сообщение от rufat2005Посмотреть сообщение
While TargetTime>GetTickCount Do
begin
Application.ProcessMessages;
Sleep(1);
If Application.Terminated then Exit;
end;

Слишком толсто. Будет сильно жрать оперативу и/или процент загрузки ЦП.
Как вариант, можно через GetTickCount применить ещё один способ, но он скорее подойдёт для проверки нажатий клавиш в перерывах между "долгими" обработчиками этих нажатий. Но есть существенный минус - сложно всё это будет организовать. Плюс - нет Sleep, который многим так страшен.

Вывод: проще использовать отдельный поток, причём, если это бот, то для разных типов действий лучше даже создать несколько потоков.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
  Ответить с цитированием
Старый 21.04.2012, 18:57   #5
-= Мастер Света =-
 Пехотинец
Аватар для rufat2005
 
rufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауруrufat2005 излучает ауру
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Отправить сообщение для rufat2005 с помощью ICQ Отправить сообщение для rufat2005 с помощью Skype™
 
По умолчанию Re: Замена к функции Sleep() чтобы программа не зависал.

по мне так реализовать лутше
// открываем коробки по ид
procedure OtkritieKorobok;
var
Chast1, Chast2:String;
i, e:Integer;
titemId:array [1..16] of Integer;
label
dalshe;
begin
if hProcess <> 0 then
begin
tOtkritiyaKorobok:=GetTickcount+9999999999;
titemid[1] := StrToInt(Form1.Edit19.Text);
titemid[2] := StrToInt(Form1.Edit20.Text);
titemid[3] := StrToInt(Form1.Edit21.Text);
titemid[4] := StrToInt(Form1.Edit22.Text);
titemid[5] := StrToInt(Form1.Edit23.Text);
titemid[6] := StrToInt(Form1.Edit24.Text);
titemid[7] := StrToInt(Form1.Edit25.Text);
titemid[8] := StrToInt(Form1.Edit26.Text);
titemid[9] := StrToInt(Form1.Edit27.Text);
titemid[10] := StrToInt(Form1.Edit28.Text);
titemid[11] := StrToInt(Form1.Edit29.Text);
titemid[12] := StrToInt(Form1.Edit30.Text);
titemid[13] := StrToInt(Form1.Edit31.Text);
titemid[14] := StrToInt(Form1.Edit32.Text);
titemid[15] := StrToInt(Form1.Edit33.Text);
titemid[16] := StrToInt(Form1.Edit34.Text);
for e:=1 to 16 do
begin
for i:=0 to (MaksKolYacheek-1) do
begin
If (ItemId[i] = titemid[e]) and (ItemId[i]>0) then
begin
Chast1:= copy(IntToHex(titemid[e], 4),1,2);
Chast2:= copy(IntToHex(titemid[e], 4),3,2);
Packet('28000001'+IntToHex(i, 2)+'00'+Chast2+Chast1+'0000');
goto dalshe;
end;
end;
dalshe:
Delay(StrToInt(form1.edit46.text));
end;
tOtkritiyaKorobok:=GetTickcount+StrToInt(form1.Edi t41.Text);
end;
end;
________________
PWA for PWPVP
Автор программы PwRuf - Bot и PwRuf - Crafter
  Ответить с цитированием
Пользователь сказал cпасибо:
NebesaBag (31.05.2013)
Старый 31.05.2013, 01:01   #6
 Пехотинец
Аватар для NebesaBag
 
NebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражания
Регистрация: 27.12.2011
Сообщений: 73
Популярность: 2425
Сказал(а) спасибо: 334
Поблагодарили 57 раз(а) в 27 сообщениях
 
По умолчанию Re: Замена к функции Sleep() чтобы программа не зависал.

Автору большое спасибо.
Стыдно сказать как долго искал данную информацию, хотя давно сижу на жуке, но искал чисто в гугле)
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]

Пишу софт на заказ(Delphi / C# / PHP-скрипты). Описывайте задачи и цели софта, сообщайте сумму на которую рассчитываете.
Skype: vinozavr (Молдова)


Кто плюсует популярность, подписывайтесь пожалуйста)
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WallHack:функции,описание функций. GRoooV1k Общение и обсуждение, архив Point Blank 8 20.01.2012 14:46
[Помогите!] какая программа нужна чтобы воровать нычки с фейков и отправлять себе dunia123 Общение и обсуждение (Тюряга ВК) 6 02.06.2011 17:46
[Помогите!] Элемент "Sleep" не существует в текущем контексте Glok7 Школа Читера 3 15.04.2011 10:44

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 11:59.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net