powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Tаймаут на выполнение функции из DLL
18 сообщений из 18, страница 1 из 1
Tаймаут на выполнение функции из DLL
    #39474195
vlkc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здрасте, может кто знает как сделать таймаут ожидания выполнения функции котороя запущена из dll?
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474203
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Легко: запускаешь поток, запускаешь функцию, через некоторое время убиваешь функцию вместе
с потоком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474210
vlkc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно примерчик для зеленых :)
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474213
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если зелёный - забудь, это невозможно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474279
vlkc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну хорошо - желтый :)
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474285
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё равно обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474337
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlkcЗдрасте, может кто знает как сделать таймаут ожидания выполнения функции котороя запущена из dll?

Функция из DLL ничем не отличается от функции не из DLL
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474370
vlkc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
schi, Спасибо за мысль
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474443
vlkc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Event1:= CreateEvent(nil, False, False, nil);
 
Simple_thr := TSimpleThrd.Create();
Simple_thr.Resume;
 
try
  MsgWaitForMultipleObjects (1, Event1, False, 2000, QS_ALLINPUT); //2 секунды ждем пока в потоке отработает функция
  if not Simple_thr.Terminated then begin                                      //несделала работу - обрубаем
    Simple_thr.Terminate;
    Simple_thr:= nil;
  end;
finally
  CloseHandle(Event1);
end;



Как код?
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474476
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlkcКак код?

Неработоспособен чуть менее чем полностью.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474600
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, как-то так (warninig, говнокод):

Код: pascal
1.
2.
3.
4.
5.
6.
case WaitForSingleObject(Simple_thr.Handle, 2000) of
  WAIT_OBJECT_0: { Всё нормально, обрабатываем результаты };
  WAIT_TIMEOUT: TerminateThread(Simple_thr.Handle); // Уничтожаем тред, привет утечки ресурсов!
else
  { Произошла какая-то ошибка, обрабатываем };
end;
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39474603
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хочется чтобы приложение не "подвисало" на время ожидания, то надо делить интервал ожидания на куски по 100-200 мс и впихивать туда Application.ProcessMessages;
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39486110
vlkc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поднимаю тему так как этот вариант не работает
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39486115
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlkcПоднимаю тему так как этот вариант не работает

Программист из себя никудышный. Самое простое что приходит на ум - заблокировать основную форму, т.е enabled = false и поставит windows обработчик RegisterWindowMessage воспользовавшийся ApplicationEvents ждать посыла сообщения об окончании работы функции. Слать сообщения надо в конце вызываемой функции - функцией PostMessageW
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39486119
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlkcЗдрасте, может кто знает как сделать таймаут ожидания выполнения функции котороя запущена из dll?
1. Запоминаешь текущее время (GetTickCount например);
2. Вызываешь свою функцию (как уже сказали, без разницы из dll она или нет);
3. После этого снова вызываешь GetTickCount и отнимаешь предыдущее значение.

Вот тебе и таймаут. В миллисекундах подойдет, надеюсь?
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39486120
Жышы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlkc, в общем виде эту задачу не решить.

Нужно решать конкретную задачу с конкретной функцией.
Расскажи, что за функция у тебя в dll и зачем тебе ограничивать время ее выполнения.
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39486124
Жышы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockvlkcЗдрасте, может кто знает как сделать таймаут ожидания выполнения функции котороя запущена из dll?
1. Запоминаешь текущее время (GetTickCount например);
2. Вызываешь свою функцию (как уже сказали, без разницы из dll она или нет);
3. После этого снова вызываешь GetTickCount и отнимаешь предыдущее значение.

Вот тебе и таймаут. В миллисекундах подойдет, надеюсь?

Что за бред?
...
Рейтинг: 0 / 0
Tаймаут на выполнение функции из DLL
    #39486127
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖышыРасскажи, что за функция у тебя в dll и зачем тебе ограничивать время ее выполнения.Что за бред? Где автор писал, что хочет ограничить время ее выполнения?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Tаймаут на выполнение функции из DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]