Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Estado
subtletrue
colourGreen
titletlpp - 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.

Bloco de código
languagecpp
firstline1
titleExemplo: 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");
}
Bloco de código
languagecpp
firstline1
titleExemplo: 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