Ir para o conteúdo
watt

[VB.NET 2005] Problema ao fechar um thread

Mensagens Recomendadas

watt    0
watt

boa noite!

Estou aqui a tentar fechar um thread, só que dá sempre erro e fecha-me o programa. há ai alguem que me possa ajudar ??


                    If dados = "1" Then
                        User = txtuser.Text
                        threadler.Abort()
                        Principal.ShowDialog()
                        Me.Close()
                        y = 1
                    End If

tenho o thread a correr e a trabalhar bem , só que quando fecho aqui no codigo aparece o seguinte erro:

"ex = {System.Threading.ThreadAbortException}"

e o promenores do threada dizem todos "Data = error: cannot obtain value"

alguem sabe como posso dar a volta ??

thanks

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
inginheiiro    1
inginheiiro

try
  threadler.Abort()
catch (System.Threading.ThreadAbortException)
end try

sempre que fazes um abort a uma thread é lançada a excepção System.Threading.ThreadAbortException

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
watt    0
watt

ele assim dá erro na sintax... nao será assim

                        Try
                            threadler.Abort()
                        Catch ex As System.Threading.ThreadAbortException

                        End Try

???

mas assim tb não fecha o thread

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ziwdon    0
Ziwdon

boa noite!

Estou aqui a tentar fechar um thread, só que dá sempre erro e fecha-me o programa. há ai alguem que me possa ajudar ??

penso que o facto de te fechar o programa é devido ao "Me.Close()".

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
inginheiiro    1
inginheiiro

ele assim dá erro na sintax... nao será assim

                        Try

                            threadler.Abort()

                        Catch ex As System.Threading.ThreadAbortException

                        End Try

???

mas assim tb não fecha o thread

sim, tens razão .. tinha erro de syntax.

tenta

  If Thrd.IsAlive Then
            Thrd.Abort()
            Thrd.Join()
  End If

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
watt    0
watt

boa noite!

Estou aqui a tentar fechar um thread, só que dá sempre erro e fecha-me o programa. há ai alguem que me possa ajudar ??

penso que o facto de te fechar o programa é devido ao "Me.Close()".

Não esta não é a janela principal do programa, dai, não o devia fechar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

No mesmo sitio que escolhes botões, labels, etc... tem algures por lá um "BackgroundWorker", procura em todas as secções ou vê na secção que engloba todos.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
watt    0
watt

ele assim dá erro na sintax... nao será assim

                        Try

                            threadler.Abort()

                        Catch ex As System.Threading.ThreadAbortException

                        End Try

???

mas assim tb não fecha o thread

sim, tens razão .. tinha erro de syntax.

tenta

  If Thrd.IsAlive Then
            Thrd.Abort()
            Thrd.Join()
  End If

assim q toca no abort dá erro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Pois, mas se leres na documentação (MSDN), o Abort() a uma thread, vai sempre causar uma excepção... Tens de usar o Try/Catch para que o programa não crashe, agora parte dai e tenta fazer o que for preciso pa solucionar o teu problema.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tiago Salgado    2
Tiago Salgado

Li muito rapidamente o post, mas pelo que percebi estás a tentar executar código que devia ser executado numa outra thread. Ou seja, tas a executar uma thread secundárias, e queres abrir um form e depois fechar o actual. Suponho que tenhas que usar o Delegate para poderes executar o código na thread correcta.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tiago Salgado    2
Tiago Salgado

Antes de seguir com algum código, só quero perguntar uma coisa. O formulário que estás a tentar fechar é o formulário inicial ? ou seja, é o Startup Form ?

Caso seja, vai às propriedades do projecto ( Project > Properties ) e altera o Shutdown Mode para "When last form closes"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tiago Salgado    2
Tiago Salgado

Deixo-te aqui um exemplo de como podes fazer...

Public Delegate Sub CloseFormHandler()

    Private Sub CloseForm()
        Me.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim t As System.Threading.Thread = New System.Threading.Thread(AddressOf ProcThread)
        t.Start()
    End Sub

    Private Sub ProcThread()
        'CloseForm()
        Me.Invoke(New CloseFormHandler(AddressOf CloseForm))
    End Sub

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade