Duvida imbecil | ZWAME Fórum
Duvida imbecil
Discussão em 'Programação' iniciada por AwakE, 22 de Novembro de 2004. (Respostas: 10; Visualizações: 988)
Desculpem lá esta mas como se chama aquela barra que tá na parte de baixo do internet explorer, onde aparece o "Done".
Queria por umas cenas a aparecer lá, mas não me lembro da porcaria do nome daquilo.
Já agora aproveito para perguntar outra coisa. Se eu quiser fazer um programa que não é mais do que uma barra que passa informação, estilo da bolsa, qual a maneira mais faicl de o fazer?
#3 22 de Novembro de 2004
Já agora aproveito para perguntar outra coisa. Se eu quiser fazer um programa que não é mais do que uma barra que passa informação, estilo da bolsa, qual a maneira mais faicl de o fazer ?
Se for uma aplicação a ser inserida em WEB, usas um Message Scroller, existem scripts grátis por aí...ou fazes tu que é muito fácil
Numa aplicação windows usas as propriedades da Status Bar
#4 22 de Novembro de 2004
Se é em ambiente "janelas" (tipo windows) porque é que não fazes numa janela normal? se não queres que a janela possa ser "resizable" ou minimizavel ou até mesmo sem "Title Bar" modifica as propriedades da janela.
#5 22 de Novembro de 2004
Entretanto lá me fui safando e fiz o que queria. Agora são a porcaria das subthreads que não fecham....
Um Application.Exit() não devia fechar todas as threads? Hoje ando no dia das experiencias.
#6 22 de Novembro de 2004
Não sei que linguagem estás a usar, mas se terminares "aplicação" supostamente todas as threads do mesmo processo tambem terminam, a menos que a thread esteja num processo diferente do que estás terminar.
Terminares o processo em si é talvez uma solução demasiado "brusca".
No caso de estares a usar .NET o Application.Exit() informa os o message loop para terminarem e não termina o processo em si.
Já agora que linguagem estás a usar?
#7 22 de Novembro de 2004
Pois, ia agora por isso
Tou a trabalhar com Windows Forms em C#. O que tá a acontecer é que tenho a Form, e uma thread em paralelo a processar um relógio (que dispara eventos).
Quando eu fecho a Form (no X) dispara o evento Form_Closing, mas quando tento parar a thread paralela dentro desse evento na dá....a referencia do objecto thread já vai long gone.
em .NET tambem podes usar o Application.ExitThread() para terminares a thread (Exits the message loop).
Partindo do principio que estamos a falar de C#
A resposta efectivamente é não. O Application.Exit() não termina todas as threads. Apenas termina os message loops de todas as threads.
Para terminares as threads tens varias hipoteses.
Por exemplo: Teres uma variavel de controlo que indica que a applicação fechou e a thread em cada ciclo verifica essa situação.
Outra hipotese é guardares a referencia para a thread e chamares o método Abort() da thread
Provavelmente nenhuma destas soluções se adequam ao teu problema mas como não sei o contexto em que estas a utilizar as threads não posso auxiliar melhor...
A solução às vezes é mais simples do que parece.
Como tr está em background quando o UI sai, tr fecha automaticamente (tr é o nome da thread paralela).
Yap. Essa solução tb resolve o problema. Na pratica o que acontece é que a CLR ao terminar o processo chama o método Abort() de todas as threads que sejam identificadas como background. O único senão nessa solução, mas que para o teu caso aparentemente nao tem impacto, é o facto do método Abort causar um término abrupto na thread ao lançar uma AbortThreadExcepcion (acho que a excepção tem esse nome) no fio de execução da thread, o que pode ser mau, caso a thread tenha que libertar recursos (por exemplo ficheiros)