Evaldo escreveu: > Eu estou iniciando em programação paralela, e me deparei com o seguinte > problema: quando o sistema inicia, ele cria threads que vao executar tarefas > demoradas. Se o programa for fechado antes das threads terminarem, ocorrer > erro de acsses violation. Como eu posso interromper a execução dessas threads? > > eu crio-as da seguinte forma: > var > hThreadID : THandle; > begin > hThreadID := CreateThread (nil, 0, @Funcao, nil, 0, ThreadID); Evaldo, nunca trabalhei com THandle, pelo menos não me lembro. Faça o seguinte, experimente colocar um codigo dentro do evento OnCloseQuery assim:
procedure TSeuTFormPrincipal.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin Try FreeAndNil(hThreadID); CanClose := True; Except CanClose := False; {Coloque codigos para informar que nao foi possivel fechar} End; end; Tenta aí.. []Os Joel -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html