none
Fechando o formulário principal não termina o processo em alguns computadores RRS feed

  • Pergunta

  • O problema está acontecendo em 2 dos computadores da empresa e em um computador de cliente, mas não conseguimos identificar um padrão.

    Consegui reproduzir o erro utilizando um programa simples que apenas abre um OpenFileDialog. O programa deve ser executado pelo próprio executável gerado (NÃO pelo Debug) e ele ainda fica rodando em segundo plano mesmo após fechar. Abaixo segue o código do programa, juntamente com um link para download do projeto e um vídeo demonstrando o erro.

    Código

    Public Class Form1
        Private ofdAbrir As Windows.Forms.OpenFileDialog
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ofdAbrir = New Windows.Forms.OpenFileDialog
            ofdAbrir.ShowDialog()
            ofdAbrir.Dispose()
            ofdAbrir = Nothing
        End Sub
    End Class

    Como é possível perceber no código acima, só tenho um formulário, logo não é o caso de algum formulário permanecer aberto e também não está relacionado a thrads rodando pois nenhuma é criada.

    Veja os links do projeto e do video explicativo.

    Projeto: https://drive.google.com/open?id=1d4oJYUjaaZ9xnRj4CX3HXOQPqwMZmE0V

    Video: https://drive.google.com/open?id=1sfdVUGQlwYNCQkl1Ht-cJSOb4433sqnT

    Eu realizei um outro teste, adicionando Application.Exit, End e Process.Kill (finaliza o processo mas eu não entendo porque preciso disso e eu realmente não gostaria de utilizá-lo)

    Video2: drive.google.com/open?id=1pDxeVYxSw9U1tTCDrGDxshBjUFaAAGRe 


    • Editado Gustavo Salge quarta-feira, 21 de março de 2018 12:26 Links
    terça-feira, 20 de março de 2018 14:52

Respostas

  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 28 de março de 2018 20:48
    Moderador

Todas as Respostas

  • bom se eu não me engane vc tem que dar o Close no ofd, veja se você consegue digitar ofd.close

    se não for isso você pode usar o comando End, para poder sair do programa e fechar todas as outras forms

    terça-feira, 20 de março de 2018 16:06
  • O ofd não possui essa propriedade e ele se fecha após o ShowDialog.

    O comando End, além de não ser indicado, torna até mais visível o problema pois a tela principal fica congelada.

    terça-feira, 20 de março de 2018 16:35
  • Se a necessidade é fechar o programa por completo após a OpenFileDialog ser fechada, você deve colocar após o ofdAbrir = Nothing a seguinte linha:

    Me.Close()


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    terça-feira, 20 de março de 2018 17:23
  • Na verdade a necessidade NÃO é fechar o programa após a OpenFileDialog ser fechada. Essa foi só uma maneira de reproduzir o problema, chamando uma simples OpenFileDialog através de um botão e logo depois fechando o formulário pelo X. O que se percebe, no computador em questão é que o programa permanece rodando. Seria interessante que eu conseguisse colocar o link do video que fiz para que vocês possam ver o problema. 


    terça-feira, 20 de março de 2018 17:42
  • O seu programa deve ter algum outro código que está impedindo o fechamento ou colocando em segundo plano. Não existe este comportamento de não fechar o processo no template padrão.

    Compartilhe mais do código, inclusive o Program.cs


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.


    terça-feira, 20 de março de 2018 19:38
  • Tente assim:

    Private Sub form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Application.Exit() End Sub



    MARIANO1776

    quarta-feira, 21 de março de 2018 01:24
  • O seu programa deve ter algum outro código que está impedindo o fechamento ou colocando em segundo plano. Não existe este comportamento de não fechar o processo no template padrão.

    Compartilhe mais do código, inclusive o Program.cs


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.


    Segue o link do projeto e o video explicativo e você verá que não tem mais nada no projeto. Repetindo, isso só acontece em 2 de 30 computadores aqui da empresa. Estou imaginando alguma incompatibilidade entre programas instalados ou comportamento do sistema operacional, sendo este último intrigante pois aconteceu no windows 7 e 10.

    Veja os links do projeto e do video explicativo.

    Projeto: https://drive.google.com/open?id=1d4oJYUjaaZ9xnRj4CX3HXOQPqwMZmE0V

    Video: https://drive.google.com/open?id=1sfdVUGQlwYNCQkl1Ht-cJSOb4433sqnT

    Eu realizei um outro teste, adicionando Application.Exit, End e Process.Kill (finaliza o processo mas eu não entendo porque preciso disso e eu realmente não gostaria de utilizá-lo)

    Video2: drive.google.com/open?id=1pDxeVYxSw9U1tTCDrGDxshBjUFaAAGRe 


    quarta-feira, 21 de março de 2018 12:25
  • Tente assim:

    Private Sub form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Application.Exit() End Sub



    MARIANO1776

    Eu realizei essa tentativa sem sucesso. Veja os links do projeto e do video explicativo.

    Projeto: https://drive.google.com/open?id=1d4oJYUjaaZ9xnRj4CX3HXOQPqwMZmE0V

    Video: https://drive.google.com/open?id=1sfdVUGQlwYNCQkl1Ht-cJSOb4433sqnT

    Eu realizei um outro teste, adicionando Application.Exit, End e Process.Kill (finaliza o processo mas eu não entendo porque preciso disso e eu realmente não gostaria de utilizá-lo)

    Video2: drive.google.com/open?id=1pDxeVYxSw9U1tTCDrGDxshBjUFaAAGRe 


    quarta-feira, 21 de março de 2018 12:25
  • Boa noite.

    Como você disse, é apenas um computador que não finaliza o processo.

    Quais as configurações dele?

    Processador

    Placa

    Memória

    etc.

    Muitos, ou quase todos, metem o pau no windows pelos problemas que apresenta, mas se formos ver a quantidade de possibilidades de configurações distintas, veremos que é um milagre o windows funcionar tão bem.

    Já peguei problemas semelhantes ao seu, sem solução lógica e resolvendo com contornos, isto quando a solução para este computador não fica incompatível com outros que funcionavam corretamente.

    Resumindo: não sei a explicação. Chamemos os universitários.


    MARIANO1776

    quinta-feira, 22 de março de 2018 01:13
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 28 de março de 2018 20:48
    Moderador