Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Задержка выполнения программы.[Delphi] (https://forum.antichat.xyz/showthread.php?t=206017)

ZnikiR 22.05.2010 23:26

Задержка выполнения программы.[Delphi]
 
Есть программа,первая часть выполняется сразу.
Хочу сделать,чтобы вторая часть программы выполнялась через 5 минут после запуска программы.
Можно ли это реализовать?

[ac1D] 22.05.2010 23:27

Sleep();

AlexTheC0d3r 22.05.2010 23:30

Цитата:

Сообщение от ZnikiR
Есть программа,первая часть выполняется сразу.
Хочу сделать,чтобы вторая часть программы выполнялась через 5 минут после запуска программы.
Можно ли это реализовать?

Создать дополнительный поток при старте, и в нем с самого начала Sleep(5*60*1000);
:)

гугли CreateThread();

h(f)ucker 22.05.2010 23:30

компонент Timer чем не вариант? (ну или для второй части можно задать какое-либо(любое) условие для выполнения)
P.s. при sleep программа "подвисает"

[ac1D] 22.05.2010 23:31

Код:

TNewThread = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TNewThread.Execute;
begin
  Sleep(5000);
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  NewThread: TNewThread;
begin
  NewThread:=TNewThread.Create(true);
  NewThread.FreeOnTerminate:=true;
  NewThread.Priority:=tpLower;
  NewThread.Resume;
end;


AlexTheC0d3r 22.05.2010 23:32

Цитата:

Сообщение от h(f)ucker
компонент Timer чем не вариант?
P.s. при sleep программа "подвисает"

при Sleep() она замораживается...
Есть аналог в виде Delay (http://www.delphisources.ru/pages/faq/base/delay_func.html), но я не рекомендую его использовать

AlexTheC0d3r 22.05.2010 23:35

Цитата:

Сообщение от [ac1D]
Код:

TNewThread = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TNewThread.Execute;
begin
  Sleep(5000);
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  NewThread: TNewThread;
begin
  NewThread:=TNewThread.Create(true);
  NewThread.FreeOnTerminate:=true;
  NewThread.Priority:=tpLower;
  NewThread.Resume;
end;



Советую перейти от такого создания потоков к CreateThread()... в данном случае код получится намного компактнее и эффективнее

ZnikiR 23.05.2010 17:20

Так сейчас пробывал,ничего не получилось.
Можешь показать как сделать комактнее?

miako 24.05.2010 02:16

Скинь код, посмотрим что там не получилось. Сдесь не экстрасенсы:)

M_script_ 24.05.2010 07:46

Цитата:

Сообщение от AlexTheC0d3r
Советую перейти от такого создания потоков к CreateThread()... в данном случае код получится намного компактнее и эффективнее

Чем эффективнее?


Время: 19:34