InterProcessServerTimeout
InterProcessServerTimeout (Работа с подчиненными процессами) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция позволяет получать или изменять тайм-аут сторожевого пса родительского процесса на стороне подчиненного процесса. Это позволяет, к примеру, для более длительных операций увеличить тайм-аут или временно отключить его. Функция вызывается без указания интерфейса. Для описания функции включения и включения сторожевого пса родительского процесса, см. статью InterProcessTimeout.
Синтаксис
InterProcessServerTimeout(<Тайм-аут в мс.>):<Предыдущий тайм-аут в мс. (INT)>
Аргументы
<Тайм-аут в мс.>
- (необязательный аргумент) Новый тайм-аут сторожевого пса родительского процесса в миллисекундах. Для отключения тайм-аута, необходимо использовать значение аргумента 0. Если аргумент не задан, тайм-аут не будет изменен.
Возвращаемое значение
Возвращает предыдущее значение тайм-аута.
Примеры
//Пример демонстрирует изменение тайм-аута при исполнении подчиненного процесса. Function ОбычныйСон(Длина) Sleep(Длина); EndFunction Function СистемныйСон(Длина) aKernel32:=Lib.Load("Kernel32.dll"); aKernel32.RegisterFunction("Sleep","stdcall","UI32"); аСтарый:=InterProcessServerTimeout(Длина+1000); aKernel32.Sleep(Длина); InterProcessServerTimeout(аСтарый); EndFunction аПроцесс:=Mutex.InitializeSeparateProcess(); //Установим тайм-аут равным 2 секунды аПроцесс.InterProcessTimeout(2000); //Будет выведено "Шаг 1" Message("Шаг 1"); //Будет выведено "Шаг 2" //Несмотря на то, что Sleep ожидает больше 2 секунд, это внутреннее ожидание, которое периодически обновляет тайм-аут аПроцесс.InterProcessExecuteFunction("ОбычныйСон",3000); Message("Шаг 2"); //Будет выведено "Шаг 3" //Благодяры тому, что подчиненный процесс может изменять тайм-аут сторожевого пса родительского, функция Sleep не вызвала его завершения // из-за того, что родительский процесс обнаружил его "зависание" аПроцесс.InterProcessExecuteFunction("СистемныйСон",3000); Message("Шаг 3");