Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать чтобы моё приложение как бы уснуло, во время своей работы 
:(
    Опции темы
Гость_Bartram
  Дата 3.4.2005, 12:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я пишу приложение без использования VCL! Как сделать так чтобы после какой нибудь функции приложение как бы уснуло на некотрое время а потом снова продолжило свою работу!
  Вверх
Vex
Дата 3.4.2005, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



поставить самый маленький приоритет и...
repeat
...
until <условие для пробуждения>


--------------------
Слава Україні.
PM   Вверх
bartram
Дата 3.4.2005, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Цитата(Vex @ 3.4.2005, 12:23)
until <условие для пробуждения>

А в этом месте можно поподробнее.

Добавлено @ 12:44
Дело в том что есть некая процедура которая вызываеться из dll а после нее идёт выход из приложения, дак вот функция из dll не успевает исполниться как приложение закрывается не дожидаясь окончательного выполнения той процедуры которая выполняеться из длл вот поэтому мне и нужно чтоб приложение засыпало. Может есть альтернативный метод решения данной проблемы?


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Vex
Дата 3.4.2005, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата
А в этом месте можно поподробнее.

например если системная дата соответсвует усовию

Код

var 
Time : TSYSTEMTIME; 
begin 
repeat
GetLocalTime(Time); 
until Time.wHour=5;


Код не тестировал, так что все ИМХО smile


--------------------
Слава Україні.
PM   Вверх
Vex
Дата 3.4.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата
Дело в том что есть некая процедура которая вызываеться из dll а после нее идёт выход из приложения, дак вот функция из dll не успевает исполниться как приложение закрывается не дожидаясь окончательного выполнения той процедуры которая выполняеться из длл вот поэтому мне и нужно чтоб приложение засыпало. Может есть альтернативный метод решения данной проблемы?

А что функция из ДЛЛ выполняется в отдельном потоке? Если да то не знаю как в Delphi, в Java есть специальный метод isAlive(); и join(); они гарантируют, что главный поток остановиться последним.


--------------------
Слава Україні.
PM   Вверх
Vex
Дата 3.4.2005, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Вот еще нарыл
Только что такое
Цитата
An asynchronous procedure call (APC) is queued to the thread.
smile


--------------------
Слава Україні.
PM   Вверх
bartram
Дата 3.4.2005, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Цитата(Vex @ 3.4.2005, 13:13)
А что функция из ДЛЛ выполняется в отдельном потоке? Если да то не знаю как в

Нет, dll выполняеться не в потоке.

Цитата(Vex @ 3.4.2005, 12:57)
var
Time : TSYSTEMTIME;
begin
repeat
GetLocalTime(Time);
until Time.wHour=5;

Эта функция работает но грузит процессор на 94%, а это как ты понимаешь не очень меня устраивает smile smile



--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Vex
Дата 3.4.2005, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата
Эта функция работает но грузит процессор на 94%, а это как ты понимаешь не очень меня устраивает

я же говорил
Цитата
поставить самый маленький приоритет...
smile


--------------------
Слава Україні.
PM   Вверх
Girder
Дата 3.4.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



Sleep(x)


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
bartram
Дата 3.4.2005, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Всем спасибо, я уже нашёл решение smile


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Vex
Дата 3.4.2005, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата
Всем спасибо, я уже нашёл решение

Просто интересно, ставил засыпание по времени? И еще один вопрос - почему вообще происходит сабж, ведь это не отдельный поток и выполнение процедуры из ДЛЛ должно становиться "в очередь" в главном потоке... smile


--------------------
Слава Україні.
PM   Вверх
Alex
Дата 3.4.2005, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Да все там нормально. Все вставало в свою очередь и все дожидалось. Просто вопрос чуть-чуть не правильно был сформулирован. На самом деле человеку нужно было: не завершать программу пока не выполнится некое действие.

Вот код, который ему помог:
Код

uses
    Windows
  , DateUtils
  , SysUtils
  ;

function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'NTkrx.dll';

// pid - идентификатор процесса, который нужно спрятать

// HideOnlyFromTaskManager - нужно ли прятать процесс только от
// TaskManager'а, или же от остальных программ, использующих для
// получения списка процессов функцию NtQuerySystemInformation из ntdll.dll

begin
  HideProcess(GetCurrentProcessId, false);

  while DayOf(now) <> 1 do begin // Программа не завершится пока не наступит первое число месяца
    Sleep(500); // программа засыпает на 0,5 сек. до следующей проверки
  end;
end.



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Alex
Дата 3.4.2005, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



А вот полный код проекта:

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  samples.rar


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.