Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Мне нужен метод остановить работу компа на N сек   Найти похожие ветки 

 
AlexG ©   (2004-10-21 13:02) [0]

Посоветуйте что-нибудь. Sleep() не подходит.


 
TUser ©   (2004-10-21 13:03) [1]

Напиши, что конкретно надо и почему sleep не подходит


 
AlexG ©   (2004-10-21 13:07) [2]

Sleep() только примерно устанавливает задержку. Ко времени она прямого отношения не имеет и зависит от тактов ЦП.
Что нужно: <тема ветки>.


 
Digitman ©   (2004-10-21 13:09) [3]


> остановить работу компа


нажми кнопку Reset на сист.блоке и подержи ее в нажатом состоянии "некоторое время" ... ничто другое "работу компа" не остановит ... ну разве что Вкыл/Выкл ...


 
Ega23 ©   (2004-10-21 13:11) [4]

Напиши драйвер. Хотя я неуверен, что это вообще возможно.


 
Digitman ©   (2004-10-21 13:12) [5]


> Ega23 ©   (21.10.04 13:11) [4]


> Напиши драйвер


а код драйвера кто в этот момент будет исполнять ? если умудриться "остановить работу компа" ? Пушкин ?


 
KSergey ©   (2004-10-21 13:13) [6]

> [2] AlexG ©   (21.10.04 13:07)
> Sleep() только примерно устанавливает задержку. Ко времени
> она прямого отношения не имеет и зависит от тактов ЦП.

Вранье!
Впрочем, к остановке компа это все равно не имеет отношения.


 
Игорь Шевченко ©   (2004-10-21 13:17) [7]


> а код драйвера кто в этот момент будет исполнять ? если
> умудриться "остановить работу компа" ? Пушкин ?


А никто. Драйвер может ждать прерывания, например, от часов. А все остальные запретить.


 
AlexG ©   (2004-10-21 13:19) [8]

Ну блин, какие дотошные. Не догадаться что ли, что я имею ввиду приоснановить процесс, в котором выполняется приложение? Есть какие-нибудь не дурацкие советы, а по существу?


 
TUser ©   (2004-10-21 13:19) [9]

Чтобы точно остановить на N секунд
t:=now;
while secondsbetween(t,now) < N do
  sleep(round(N/1000))


 
Ega23 ©   (2004-10-21 13:21) [10]

TUser ©   (21.10.04 13:19) [9]
Не факт, что это точно...


 
SammIk ©   (2004-10-21 13:23) [11]

Кто говорит про точность в много задачной ось?


 
Ega23 ©   (2004-10-21 13:24) [12]

Кто говорит про точность в много задачной ось?

Афтар хочит...


 
Digitman ©   (2004-10-21 13:24) [13]


> блин, какие дотошные. Не догадаться что ли, что я имею ввиду
> приоснановить процесс


а ты считаешь, что тут в угадайку люди пришли играться с тобой ?


> Есть какие-нибудь не дурацкие советы, а по существу?


на дурацкий вопрос не шди менее дурацких ответов

а по существу - сделай сервис, который будет в нужное время делать suspend всем трэдам нужного процесса, а через N секунд - соответствующие resume им всем


 
Игорь Шевченко ©   (2004-10-21 13:25) [14]


> Не догадаться что ли, что я имею ввиду приоснановить процесс,
> в котором выполняется приложение?


http://ln.com.ua/~openxs/articles/smart-questions-ru.html

читать до полного просветления


 
AlexG ©   (2004-10-21 13:27) [15]

//TUser ©   (21.10.04 13:19) [9]

secondsbetween - ты, как я понял, сам написал. А как долго она работает? Мне хотелось бы на код посмотреть. Или ты образно ее упомянул?

//SammIk ©   (21.10.04 13:23) [11]
Не нужно быть уж настолько точным :)


 
AlexG ©   (2004-10-21 13:29) [16]

//Игорь Шевченко ©   (21.10.04 13:25) [14]
Поставим флейм на полочку.


 
TUser ©   (2004-10-21 13:30) [17]


> Не факт, что это точно...

Это сильно точнее, чем sleep(10000), а абсолютной точности здесь не достичь.

> secondsbetween - ты, как я понял, сам написал

Нет, ее написал Борланд. В SysUtils, кажется - короче F1 скажет.


 
TUser ©   (2004-10-21 13:31) [18]


> Поставим флейм на полочку.

Это приглашение модераторам удалить пост [0] - так?


 
080D:07BBh ©   (2004-10-21 13:34) [19]

AlexG
вопрос нормально задавать надо

АхтУНГ ПсеВДо коД

procedure Stop(isekund:integer);
var
data,temp:TDatetime;
begin
data = Now()+isekund;// тут посмотри справку как установить секунды
While(Now() <> data)do
  begin
   Sleep(500);//чтоб остальные проги не тормазили
  end;
 
end;


 
AlexG ©   (2004-10-21 13:35) [20]

//TUser ©   (21.10.04 13:30) [17]
У меня Д5. F1 - результат не дал, поэтому так и подумал. У тебя наверно Д7...

//TUser ©   (21.10.04 13:31) [18]
Будем надеяться на их порядочность... :)

Спасибо TUser за помощь.


 
Digitman ©   (2004-10-21 13:36) [21]


> Игорь Шевченко ©   (21.10.04 13:17) [7]
>
> А никто. Драйвер может ждать прерывания, например, от часов.
> А все остальные запретить.


логично.
HLT я упустил из виду.
только вот при использовании Hyper-Threading Technology решение задачи может быть далеко не столь тривиальным ... да и какповедет себя система после такой вот паузы - тоже вопрос


 
AlexG ©   (2004-10-21 13:37) [22]

На счет КОМПА я загнул, простите.


 
Ega23 ©   (2004-10-21 13:39) [23]

080D:07BBh ©   (21.10.04 13:34) [19]

Не позорься...


 
TUser ©   (2004-10-21 13:39) [24]


> У тебя наверно Д7...

Да, а что в D5 этой ф-ции не было?

PS. В D7 - модуль DateUtils


 
Digitman ©   (2004-10-21 13:41) [25]


> AlexG ©   (21.10.04 13:37) [22]


эт точно, загнул ..

если у тебя в процессе один трэд, sleep() в нем ничуть не хуже иных способов

если более одного трэда, в каждом из них д.б. выполнен хотя бы тот же sleep(), иначе работу процесса нельзя будет считать приостановленной, пока не "спит" хотя бы один из его трэдов

имей ввиду


 
AlexG ©   (2004-10-21 13:46) [26]

//Digitman ©   (21.10.04 13:41) [25]
Я вообще этим интересуюсь, чтобы остановить только один из тредов процесса...


 
Anatoly Podgoretsky ©   (2004-10-21 14:02) [27]

Свидетель постоянно менял показания.


 
Digitman ©   (2004-10-21 14:11) [28]


> Anatoly Podgoretsky ©   (21.10.04 14:02) [27]


вот-вот


> AlexG ©   (21.10.04 13:46) [26]


sleep() в любом трэде работает одинаково



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.026 c
1-1098457860
MRAk
2004-10-22 19:11
2004.11.07
Как Добавить картинку в Drawgride в опр ячейку


14-1098218510
хм
2004-10-20 00:41
2004.11.07
во как


1-1098700751
Strimer
2004-10-25 14:39
2004.11.07
Использование Project2 в Project1


4-1096537587
kaZaNoVa
2004-09-30 13:46
2004.11.07
Хук, Dll и права System


1-1098707004
Mishenka
2004-10-25 16:23
2004.11.07
DropTarget