Código: Selecionar todos
#ifdef DLGAUTO_AS_LIB
PROCEDURE DlgAuto
#else
PROCEDURE Main
#endif
Com isso, pude criar o test.prg chamando o DLGAUTO.
Por exemplo aqui:
Código: Selecionar todos
GUI():Init()
Essa variável é diferente em cada thread. ela define qual a lib.
dlgauto apenas chama init() nem sabe qual lib vai ser.
É tudo relativamente simples, só definir o tipo de variável, pra ficar restrita ao alcance dela.
Lembram ? multithread é igual vários EXEs. Como ter uma variável diferente em cada EXE/Thread? só declarar THREAD STATIC.
Não precisa controle especial, não precisa inventar moda, é só definir variável como THREAD STATIC.
Todo mundo sabe escrever THREAD STATIC ? então todo mundo consegue fazer isso.
É simples assim.
Apenas não faz parte do dia a dia, então confunde sobre a utilidade/funcionamento.
É este conjunto:
Código: Selecionar todos
THREAD STATIC oGUI
FUNCTION GUI()
RETURN oGUI
Uso a função GUI() pra obter o conteúdo da variável a partir de qualquer fonte.
Ela vai conter a classe de uma LIB, pode ser hwgui, hmge, tanto faz.
Então GUI():Init() vai chamar o init de alguma lib. Tá aí o segredo de funcionar uma lib em cada thread. (se a lib deixar)
