Я использую старый добрый OpenEdge AppServer (не PAS) 11.7, используя сгенерированную DLL-прокси (генератор прокси-серверов для открытых клиентов) для C#.
Это работает довольно хорошо, за исключением установки тайм-аута для соединений. Если я вызываю функцию, используя этот прокси, я хочу установить тайм-аут, чтобы вызов не удался (например, путем создания исключения)
Я пробовал следовать Progress.Open4GL.RunTimeProperties
RunTimeProperties.ConnectionTimeout
Недокументировано. Не делает то, что следует из названия
RunTimeProperties.SocketTimeout = 8000;
Не документировано. Значение по умолчанию – 0. Скорее всего, значение равно миллисекундам
Приближаемся к этому параметру. Если время выполнения вызываемой функции превышает это значение, выдается Progress.Open4GL.Exceptions.Open4GLException.
НО: он выдает только тогда, когда вызывающая функция возвращается, поэтому он совершенно бесполезен. Легко проверить, добавив «PAUSE 100» к вызываемой функции. Через 100 секунд возникает исключение (а не через 8 секунд)
Как реализовать таймаут для вызова функции?