Fórum usando thread .. erro #348289
31/10/2007
0
CheckSynchronize called from thread $B78, which is NOT the main thread
uso uma thread A que start uma B.. pelo que li a respeito não posso chamar o CheckSynchronize de uma thread principal.. ???
Souza
Curtir tópico
+ 0Posts
31/10/2007
Massuda
Gostei + 0
31/10/2007
Souza
A PRINCIPAL SERIA A QUE FOI CRIADA PRIMEIRO ?
ESSE É O CODIGO QUE EXECUTA DENTRO DO EXECUTE DA ´A´..
if (form1.indListaBuffer > 10) and (bLeia = True) then
begin
CheckSynchronize(100);
TThreadtags.Create(False); // CRIO B
bLeia := False;
end;
seria isso ?
Gostei + 0
31/10/2007
Massuda
Gostei + 0
31/10/2007
Massuda
Gostei + 0
31/10/2007
Souza
só que quando vou finalizar a gravação da esse erro :
CheckSynchronize called from thread $B78, which is NOT the main thread.
não to usando o synchronize(metodo);
no execute da thread ...
Gostei + 0
31/10/2007
Massuda
Gostei + 0
31/10/2007
Souza
cotação de dollar, soja .....
dai me conecto a um ip e porta.. usando o indy.. leio co conteudo do buffer .. e salvo em um Tlist.. ´conteudo esse algumas tagas XML´,
a leitura é feita pela thread A .. a thread B trata a as tags lidas fecha o bloco xml e grava em uma tabela na base..
a A consegue ler sem problemas mas quando a B vai gravar da esse erro..,
CheckSynchronize called from thread $B78, which is NOT the main thread
..
faço duas threads pq tenho que ler o maximo de informação possivel.. do buffer para não perder cotação..
e uso o Tlist para armazenar o que foi lido... pq as tagas não vem completas então eu preciso concatenar o que foi lido .. para ter o bloco xml todo. esse é o papel da A.
se puder me add no msn .. fabio.srs@hotmail.com
obrigado pela atenção.
Gostei + 0
31/10/2007
Massuda
Gostei + 0
01/11/2007
Macario
A PRINCIPAL SERIA A QUE FOI CRIADA PRIMEIRO ?
ESSE É O CODIGO QUE EXECUTA DENTRO DO EXECUTE DA ´A´..
if (form1.indListaBuffer > 10) and (bLeia = True) then
begin
CheckSynchronize(100);
TThreadtags.Create(False); // CRIO B
bLeia := False;
end;
seria isso ?[/quote:1f669903ae]
Nao sei bem se esta maneira de criar uma TThread dentro de outra é a ideal.
Voce poderia ter as duas independentes e usar o WaintFor para controlar a leitura. E se necessario usar a Classe Critical para nao perder o sincronismo.
:roll:
Gostei + 0
21/11/2007
Souza
eis o que estava dando erro nas threads ... a Thread B que fazia a gravação no banco usava um componente que fazia a chamada ao metodo checksycronize .. isso causava o erro na danadinha.... pois esse metodo não pode ser chamado por uma thread que não seja a principal (´a própria aplicação´)..
obrigado pela colaboração.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)