Árvore de páginas

TLPP - LANGUAGE

  • SetTimeout(nSeconds)
    • objetivo: alterar o valor corrente de timeout (tempo de espera). Veja DynCall - Configuração de timeout.
    • nSeconds: quantos segundos no máximo esperar pela resposta de um CallFunction ou CallMethod.
    • retorno: lógico
      • .T.  execução com sucesso
      • .F.  execução com erro


Esse exemplo tem o objetivo de forçar um estouro de tempo de espera. A função timeout da DLL vai gastar mais tempo do que a aplicação TLPP decide esperar.
Certamente, o teste vai gerar exceção e a sua thread será finalizada, porém de forma graciosa.

Exemplo: lado da biblioteca
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#define EXPORT __declspec(dllexport)

EXPORT void timeout()
{
  printf("\nComecei\n"); 
  // 80 segundos
  Sleep(80000);
  printf("\nTerminei\n");
}
Exemplo: lado TLPP
#include "tlpp-core.th"

Function U_DynCall()
  Local oDll as Object
  Local nValue as Numeric
  
  If (IsSrvUnix())
    oDll := tRunDll():New("./dllc.so")
  Else
    oDll := tRunDll():New("dllc.dll")
  EndIf

  oDll:SetTimeout(10) // só espero 10 segundos
  oDll:callFunction("timeout", "V", nil)
  Conout("Ufa! Consegui esperar")

  // Vamos Sanitizar?
  oDll:Free()
  
Return
  • Sem rótulos