![]() |
Задержка выполнения программы.[Delphi]
Есть программа,первая часть выполняется сразу.
Хочу сделать,чтобы вторая часть программы выполнялась через 5 минут после запуска программы. Можно ли это реализовать? |
Sleep();
|
Цитата:
:) гугли CreateThread(); |
компонент Timer чем не вариант? (ну или для второй части можно задать какое-либо(любое) условие для выполнения)
P.s. при sleep программа "подвисает" |
Код:
TNewThread = class(TThread) |
Цитата:
Есть аналог в виде Delay (http://www.delphisources.ru/pages/faq/base/delay_func.html), но я не рекомендую его использовать |
Цитата:
Советую перейти от такого создания потоков к CreateThread()... в данном случае код получится намного компактнее и эффективнее |
Так сейчас пробывал,ничего не получилось.
Можешь показать как сделать комактнее? |
Скинь код, посмотрим что там не получилось. Сдесь не экстрасенсы:)
|
Цитата:
|
Код:
procedure TForm1.Timer1Timer(Sender: TObject); |
А вот те слип при котором не бует зависонов )
Код:
int time=GetTickCount(); |
function proc(): integer;
begin Sleep(Твое время задержки); //Твои действия "второй части" (потока). result:= 0; end; var id: DWORD; begin CreateThread(nil, 0, @proc, nil, 0, id); //Твои действия "первой части" (потока); //Если эта часть кода может выполниться за время (или раньше), которое ты поставил в Sleep выше, то раскоменировать след.строку и возложить завершение проги на второй поток (функцию proc). //Sleep(infinite); end. Вариант 2: function proc(): integer; begin Sleep(Твое время задержки); //Твои действия "второй части" (потока). result:= 0; end; var id: DWORD; h: THandle; begin h:= CreateThread(nil, 0, @proc, nil, 0, id); //Твои действия "первой части" (потока); WaitForSingleObject(h, infinite); //ждем завершения созданного потока. end. |
Цитата:
Ildon, Нельзя на это полагаться, еще раз повторяю |
Цитата:
Скоко раз так делал все нормально было |
Цитата:
2. Предложи лучший вариант. 3. Без выполнения пунктов 1 и 2 не нужно говорить того, что ты говоришь, ибо это тебя не красит как человека, разбирающегося в этих "вещах". |
Во-первых, в функции потока необходимо
Цитата:
Цитата:
Цитата:
Цитата:
Еще раз повторяю, нет гарантии, что Цитата:
Надеюсь теперь понятно. UPD: Цитата:
Цитата:
|
AlexTheC0d3r,
Цитата:
Цитата:
Я не вижу от тебя примера, где бы return (result) давал сбой, да и в msdn ясно написано, что return вполне подходит для выхода из потока. WTF? Цитата:
Цитата:
Прошу еще раз обратить внимание на 3ий пункт моего пред.поста. |
| Время: 00:56 |