Abortar um Thread
Tenho uma thread q faz calculos em um clientdataset em segundo plano.
Sempre que uma nova thread é disparada a anterior deve ser abortada pois o resultado do calculo ja nao ira mais servir.
Mas as vezes da uns erros muito loucos, o programa fecha sozinho, etc...
Detectei o problema como sendo o seguinte:
As vezes o projeto nao consegue abortar uma thread.
Ai uma é criada em cima da outra e os erros comecam.
Alguem sabe como abortar uma thread de maneira silenciosa e efetiva?
Sempre que uma nova thread é disparada a anterior deve ser abortada pois o resultado do calculo ja nao ira mais servir.
Mas as vezes da uns erros muito loucos, o programa fecha sozinho, etc...
Detectei o problema como sendo o seguinte:
As vezes o projeto nao consegue abortar uma thread.
Ai uma é criada em cima da outra e os erros comecam.
Alguem sabe como abortar uma thread de maneira silenciosa e efetiva?
Ivanh
Curtidas 0
Respostas
Massuda
11/07/2005
Você está usando TThread.Terminate para parar a thread? Neste caso, sua thread está testando a flag TThread.Terminated?
No seu caso, como (pelo que entendi) está criando uma nova thread cada vez que for necessário, é interessante trabalhar com TThread.FreeOnTerminate = True, assim a thread é automaticamente destruída ao terminar.
No seu caso, como (pelo que entendi) está criando uma nova thread cada vez que for necessário, é interessante trabalhar com TThread.FreeOnTerminate = True, assim a thread é automaticamente destruída ao terminar.
GOSTEI 0
Ivanh
11/07/2005
Fiz isso tudo!
Aparentemente funciona!
Mas fazendo um ´hardtest´, os erros comecam a aparecer!
Aparentemente funciona!
Mas fazendo um ´hardtest´, os erros comecam a aparecer!
GOSTEI 0
Massuda
11/07/2005
Seria interessante se você postasse a parte do código relacionada com a thread.
Outra possibilidade, mas eu não tenho conhecimento sobre isso, é que o CDS esteja dando problemas ao ser usando de modo multithread... eu não tenho idéia se um CDS suporta ser manipulado em diferentes threads.
Outra possibilidade, mas eu não tenho conhecimento sobre isso, é que o CDS esteja dando problemas ao ser usando de modo multithread... eu não tenho idéia se um CDS suporta ser manipulado em diferentes threads.
GOSTEI 0