TRATAR AO PARAR UMA THREAD

 Tópico anterior Próximo tópico Novo tópico

TRATAR AO PARAR UMA THREAD

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#479301 - 25/01/2018 22:26:26

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


 Anexos estao visíveis somente para usuários registrados

Boa noite pessoal, estou com problema ao parar o processo de uma Thread,
no meu Form de Cadastro de Notas Fiscais, eu criei uma tela onde fica Aguardando ate terminar o processo de "Salvar" no banco de dados, que seria salvar a Notas e os Itens.

sempre da Erro nesse Form que esta a Thread, qnd chega na rotina de Fechar o processo. que vai abrir o novo Form para Finalizar o Cadastro da uma mensagem de erro.

O Thread estava sendo anulado

[txt-color=#e80000]  Consulte o final desta mensagem para obter detalhes sobre como chamar a
depuração just-in-time (JIT) em vez desta caixa de diálogo.

************** Texto de Exceção **************
System.Threading.ThreadAbortException: O thread estava sendo anulado.
   em System.Drawing.SafeNativeMethods.Gdip.GdipImageSelectActiveFrame(HandleRef image, Guid& dimensionID, Int32 frameIndex)
   em System.Drawing.Image.SelectActiveFrame(FrameDimension dimension, Int32 frameIndex)
   em System.Drawing.ImageAnimator.ImageInfo.UpdateFrame()
   em System.Drawing.ImageAnimator.UpdateFrames()
   em System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)
   em System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
   em System.Windows.Forms.Control.WmPaint(Message& m)
   em System.Windows.Forms.Control.WndProc(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   em System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Conjuntos de Módulos (Assemblies) Carregados **************
mscorlib
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
mscorlib.resources
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Microsoft.VisualBasic
    Versão do Conjunto de Módulos (Assembly): 8.0.0.0
    Versão do Win32: 8.0.50727.5483 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5491 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5492 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Core
    Versão do Conjunto de Módulos (Assembly): 3.5.0.0
    Versão do Win32: 3.5.30729.5420 built by: Win7SP1
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Configuration
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5488 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Data
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Transactions
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
CrystalDecisions.Shared
    Versão do Conjunto de Módulos (Assembly): 13.0.2000.0
    Versão do Win32: 13.0.12.1494
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/CrystalDecisions.Shared/13.0.2000.0__692fbea5521e1304/CrystalDecisions.Shared.dll
----------------------------------------
CrystalDecisions.ReportAppServer.CommLayer
    Versão do Conjunto de Módulos (Assembly): 13.0.2000.0
    Versão do Win32: 13.0.12.1494
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/CrystalDecisions.ReportAppServer.CommLayer/13.0.2000.0__692fbea5521e1304/CrystalDecisions.ReportAppServer.CommLayer.dll
----------------------------------------
CrystalDecisions.ReportAppServer.ClientDoc
    Versão do Conjunto de Módulos (Assembly): 13.0.2000.0
    Versão do Win32: 13.0.12.1494
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/CrystalDecisions.ReportAppServer.ClientDoc/13.0.2000.0__692fbea5521e1304/CrystalDecisions.ReportAppServer.ClientDoc.dll
----------------------------------------
CrystalDecisions.ReportAppServer.Controllers
    Versão do Conjunto de Módulos (Assembly): 13.0.2000.0
    Versão do Win32: 13.0.12.1494
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/CrystalDecisions.ReportAppServer.Controllers/13.0.2000.0__692fbea5521e1304/CrystalDecisions.ReportAppServer.Controllers.dll
----------------------------------------
CrystalDecisions.ReportAppServer.DataDefModel
    Versão do Conjunto de Módulos (Assembly): 13.0.2000.0
    Versão do Win32: 13.0.12.1494
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/CrystalDecisions.ReportAppServer.DataDefModel/13.0.2000.0__692fbea5521e1304/CrystalDecisions.ReportAppServer.DataDefModel.dll
----------------------------------------
CrystalDecisions.ReportAppServer.DataSetConversion
    Versão do Conjunto de Módulos (Assembly): 13.0.2000.0
    Versão do Win32: 13.0.12.1494
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/CrystalDecisions.ReportAppServer.DataSetConversion/13.0.2000.0__692fbea5521e1304/CrystalDecisions.ReportAppServer.DataSetConversion.dll
----------------------------------------
CrystalDecisions.ReportAppServer.CubeDefModel
    Versão do Conjunto de Módulos (Assembly): 13.0.2000.0
    Versão do Win32: 13.0.12.1494
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/CrystalDecisions.ReportAppServer.CubeDefModel/13.0.2000.0__692fbea5521e1304/CrystalDecisions.ReportAppServer.CubeDefModel.dll
----------------------------------------
CrystalDecisions.ReportAppServer.ReportDefModel
    Versão do Conjunto de Módulos (Assembly): 13.0.2000.0
    Versão do Win32: 13.0.12.1494
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/CrystalDecisions.ReportAppServer.ReportDefModel/13.0.2000.0__692fbea5521e1304/CrystalDecisions.ReportAppServer.ReportDefModel.dll
----------------------------------------
log4net
    Versão do Conjunto de Módulos (Assembly): 1.2.10.0
    Versão do Win32: 1.2.10.0
    Base de Código: file:///C:/Windows/assembly/GAC_32/log4net/1.2.10.0__692fbea5521e1304/log4net.dll
----------------------------------------
System.resources
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/System.resources/2.0.0.0_pt-BR_b77a5c561934e089/System.resources.dll
----------------------------------------
System.Web
    Versão do Conjunto de Módulos (Assembly): 2.0.0.0
    Versão do Win32: 2.0.50727.5491 (Win7SP1GDR.050727-5400)
    Base de Código: file:///C:/Windows/assembly/GAC_32/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll
----------------------------------------
CrystalDecisions.Shared.resources
    Versão do Conjunto de Módulos (Assembly): 13.0.2000.0
    Versão do Win32: 13.0.12.1494
    Base de Código: file:///C:/Windows/assembly/GAC_MSIL/Cry



#479302 - 25/01/2018 23:49:21

JABA
CABO FRIO
Cadast. em:Agosto/2005


forum.imasters.com.br/topic/527281-systemthreadingthreadabortexception-o-thread-estava-sendo-anulado/

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#479303 - 26/01/2018 00:07:37

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016




JABA olha so o comentario dele

Postado Setembro 30, 2014

Consegui resolver, tirei esse thead e criei 2 métodos, 1 que abre a tela de splash e outro que fecha.

no caso não tem como tratar esse Thread..
eu criei uma tela de "AGUARDE" ate que meus processos de INSERT, UPDATE. finalize.

criei uma tela ate bacana para deixar visivel para o operador... ate q os processos finalizem.

abaixo vou mostrar como faço para chamar e parar o Thread

  Imports System.Threading

Private Shared th As Thread
    Public Sub IniciaProcesso()
        th = New Thread(New ThreadStart(AddressOf MostraProceso))
        th.IsBackground = True
        th.Name = "Aguarde"
        th.Start()
    End Sub

'>>>
   Private Shadows Sub MostraProceso()
        Dim sForm As New Aguardar_Impressao()
        sForm.ShowDialog()
    End Sub

'>>>
Public Sub ParaProcesso()
        Thread.Sleep(500)
        th.Abort()
        th = Nothing
    End Sub




#479304 - 26/01/2018 01:00:06

JABA
CABO FRIO
Cadast. em:Agosto/2005


Trabalhar com thread e Formulários é sempre complicado mesmo. Lhe aconselho a criar threads para os processos de INSERT E UPDATE e disparar um evento quando eles terminarem. Na parte final do conteúdo do link a seguir tem um exemplo de como se faz isso.

www.macoratti.net/vbn_thd1.htm

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#479305 - 26/01/2018 01:03:24

JABA
CABO FRIO
Cadast. em:Agosto/2005


Uma maneira melhor poderia ser assim:

www.macoratti.net/12/03/c_oasql.htm

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#479306 - 26/01/2018 09:04:23

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Threads e Formulários não são bons amigos. Aconselho repensar se o que você está fazendo é necessário o uso de uma thread.

Uma solução para utilizar tarefas paralelas é o backgroundworker, com ele você pode ter o controle das operações, como quando inicia e termina, além do progresso da operação.
Além disso, temos no .net framework 4.5 a possibilidade de utilizar métodos assíncronos, que suportam as características do backgroundworker.




#479314 - 26/01/2018 11:26:12

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Citação:
  backgroundworker

Verdade, utilizo sem problemas, mas, sabendo tratar quando ele inicia,processa e completa. Na verdade esse Controle executa as Threads.



#479322 - 26/01/2018 15:42:02

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Citação:
:
  backgroundworker
Verdade, utilizo sem problemas, mas, sabendo tratar quando ele inicia,processa e completa. Na verdade esse Controle executa as Threads.


Nilsontres, tem como fazer essa tela de "AGUARDE" ate q minhas funções de INSERT e UPDATE finalize.  
tipo..
eu tenho 3 FOrms.
*Form de COmpras
*Form de Aguarde ( que deixei para exibir para o cliente ter paciencia ate q os processos finalizem. coloquei um Gifs girando simulando q ta finalizando a compra)
* Form de Forma de PAgamento para finalizar a compra.

dai qnd o cliente clica no botao para   FINALIZAR , eu chamo a tela de   Form de Aguarde , em tempo de execução  usando o metodo THREAD
dai qnd eu paro o THREAD, ele fecha a tela   Form de Aguarde e Abre a tela    Form de Forma de Pagamento

dai as vezes esse THREAD da pau, tem hora q aparece essa mensagem ai do top, e tem hora q nao aparece...

Minha pergunta é.... Tem como fazer esses procedimentos que utilizo, usando o
  backgroundworker    ???




#479323 - 26/01/2018 15:50:41

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Citação:
:
Threads e Formulários não são bons amigos. Aconselho repensar se o que você está fazendo é necessário o uso de uma thread.

Uma solução para utilizar tarefas paralelas é o backgroundworker, com ele você pode ter o controle das operações, como quando inicia e termina, além do progresso da operação.
Além disso, temos no .net framework 4.5 a possibilidade de utilizar métodos assíncronos, que suportam as características do backgroundworker.


é Verdade GUIMORAES, tem horas que funciona blz sem dar esse Bug, ai tem horas que fica acontecendo direto. :( isso no cliente é Terrível... vai da uma má impressão para eles... Bug do Sistema



#479324 - 26/01/2018 15:53:45

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Última edição em 26/01/2018 15:55:46 por NILSONTRES

Citação:
  Minha pergunta é.... Tem como fazer esses procedimentos que utilizo, usando o
  backgroundworker    ???

Depende ?. Vc deve ter algo onde se basear para esses update, um grid provavelmente ou uma tabela, percorra eles dentro do DoWork do BackgroundWorker.
Mas o ideal é fazer tudo no mesmo form, nunca fiz utilizando outro form, coloque um progress ou uma label de percentual, mas no próprio form, aprenda a utilizar o BackgroundWorker, entenda bem ele que vc faz.
Esse comando ai abaixo colocado no load do form costuma evitar esses erros que vc esta tendo, mas dizem que não é recomendado, não me pergunte porque. não sei.
CheckForIllegalCrossThreadCalls = False
Dois caras que conhecem muito sobre THREAD, Ocelot e Kerplunk.




#479330 - 26/01/2018 21:27:00

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Citação:
:
CheckForIllegalCrossThreadCalls = False .


adicione essa função no load do Form "Aguarde"
mesmo assim as vezes ainda aparece esse maldito erro.  




 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JOHNSTEVE em 27/01/2018 16:58:04