Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Прекратить исполнение внешней процедуры

69K
05 ноября 2011 года
l2qwe
13 / / 27.09.2011
Доброе время суток.
В своей программе я подключаюсь к другому приложению и вызываю одну из его функций, это дело происходит в цикле.
 
Код:
while not l_dataset do begin
  l_filename := l_dataset..FieldByName('_LOCALNAME').AsString;
  l_model.vrLoadModel(l_filename ,nil,(OPEN_FULL_STR_SERVER or FILES_EXTRACT));
  l_dataset.next;
end;


l_model.vrLoadModel(l_filename ,nil,(OPEN_FULL_STR_SERVER or FILES_EXTRACT));
вот эта процедура иногда зависает
Возможно ли при условии если исполняется процедура дольше 60 секунд прекратить исполнение процедуры и продолжить цикл?
14
05 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
Можно выделить вызов в отдельный поток, но если не знать его подноготной это может быть чревато.
69K
07 ноября 2011 года
l2qwe
13 / / 27.09.2011
Нашел вот такой пример
Код:
var
  Context: TContext;
begin

  // Этот код выполняется в главном потоке (например, Button1Click)

  Context := EnterWorkerThread;
  try

    { Этот код выполняется во вторичном потоке }
    { Хотя это код Button1Click, но он выполняется, как если бы он был }
    { помещён в TThread.Execute. }

  finally
    LeaveWorkerThread(Context);
    // После вызова LeaveWorkerThread переменная Context недействительна.
  end;

  // Этот код выполняется в главном потоке


То есть как я понял делать надо вот так
Код:
while not l_dataset.eof do begin
  l_filename := l_dataset..FieldByName('_LOCALNAME').AsString;
  Context := EnterWorkerThread;
  try
    l_model.vrLoadModel(l_filename ,nil,(OPEN_FULL_STR_SERVER or FILES_EXTRACT));
  finally
    LeaveWorkerThread(Context);
  end;
  sleep(60000);//Ждем минутку
  //..............
  //и вот тут необходимо как то проверить, выполнилась ли процедура или нет
  //..............
  l_dataset.next;
end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог