Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Tаймаут на выполнение функции из DLL / 18 сообщений из 18, страница 1 из 1
19.06.2017, 15:50:30
    #39474195
vlkc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
Здрасте, может кто знает как сделать таймаут ожидания выполнения функции котороя запущена из dll?
...
Рейтинг: 0 / 0
19.06.2017, 15:54:15
    #39474203
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
Легко: запускаешь поток, запускаешь функцию, через некоторое время убиваешь функцию вместе
с потоком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.06.2017, 15:58:02
    #39474210
vlkc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
можно примерчик для зеленых :)
...
Рейтинг: 0 / 0
19.06.2017, 16:01:01
    #39474213
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
Если зелёный - забудь, это невозможно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.06.2017, 16:47:10
    #39474279
vlkc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
ну хорошо - желтый :)
...
Рейтинг: 0 / 0
19.06.2017, 16:52:17
    #39474285
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
Всё равно обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.06.2017, 17:58:39
    #39474337
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
vlkcЗдрасте, может кто знает как сделать таймаут ожидания выполнения функции котороя запущена из dll?

Функция из DLL ничем не отличается от функции не из DLL
...
Рейтинг: 0 / 0
19.06.2017, 18:30:50
    #39474370
vlkc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
schi, Спасибо за мысль
...
Рейтинг: 0 / 0
19.06.2017, 20:49:31
    #39474443
vlkc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
Код: 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
19.06.2017, 22:12:17
    #39474476
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
vlkcКак код?

Неработоспособен чуть менее чем полностью.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.06.2017, 10:04:30
    #39474600
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
ИМХО, как-то так (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
20.06.2017, 10:05:50
    #39474603
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
Если хочется чтобы приложение не "подвисало" на время ожидания, то надо делить интервал ожидания на куски по 100-200 мс и впихивать туда Application.ProcessMessages;
...
Рейтинг: 0 / 0
10.07.2017, 21:50:31
    #39486110
vlkc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
Поднимаю тему так как этот вариант не работает
...
Рейтинг: 0 / 0
10.07.2017, 21:58:14
    #39486115
Няшик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tаймаут на выполнение функции из DLL
vlkcПоднимаю тему так как этот вариант не работает

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

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

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

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

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


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