Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alexandre Carmo

Problemas ao capturar arquivo de imagem

Recommended Posts

Bom dia

Pessoal criei um aplicativo que tem 5 picturebox, criei 5 thread uma para cada pucturebox, o sistema fica exibindo em cada picturebox imagens JPG que estãso em uma pasta compartilhada de outro computador na rede, eu mapeio essa pasta na máquina que esta no aplicativo e via código minha aplicação fica acessando o banco de dados e exibindo a imagem correta em cada picturebox. Usando esse recurso que criei um uma máquina com windows 7, roda normalmente mas usando em uma máquina com xp, não roda ele não mostra as imagens se eu deixar as 5 threads, mas se eu deixar apenas uma carregando iamgens funciona. Como eu resolveria isso para rodar normal no xp?

 

Segue abaixo meu código:

Imports System.Threading
Imports System.IO

Public Class frmView
 Private t1, t2, t3, t4, t5 As Thread
 Private Sub frmView_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   t1 = New Thread(AddressOf Me.carregaDados1)
   t1.Start()

   t2 = New Thread(AddressOf Me.carregaDados2)
   t2.Start()

   t3 = New Thread(AddressOf Me.carregaDados3)
   t3.Start()

   t4 = New Thread(AddressOf Me.carregaDados4)
   t4.Start()

   t5 = New Thread(AddressOf Me.carregaDados5)
   t5.Start()
 End Sub
 Public Sub carregaDados1()
   Dim j As Integer = 1
   Dim dsAcesso As New DataSet
   Dim dsMorador As New DataSet()
   Dim dsGrupo As New DataSet
   Dim dsPorta As New DataSet()
   dsPorta = ClassNegociosAcessoPortasIP.VerificaPortasIPVisualizador("1")
   If dsPorta.Tables(0).Rows.Count > 0 Then
     While True
       dsAcesso = ClassNegociosAcessoPortasIP.VerificaAcessoPortasIP(dsPorta.Tables(0).Rows(0).Item("id").ToString)
       If dsAcesso.Tables(0).Rows.Count > 0 Then
         dsMorador = ClassNegociosMoradores.VerificaMoradorLocal(dsAcesso.Tables(0).Rows(0).Item("codigo_morador").ToString)
         dsGrupo = ClassNegociosGrupo.VerificaGrupoLocalIdentificado(dsMorador.Tables(0).Rows(0).Item("codigo_grupo").ToString)
         Me.Invoke(New AddItemsDelegate(AddressOf addItToLBLPrincipal), dsAcesso.Tables(0).Rows(0).Item("data") + " " + dsAcesso.Tables(0).Rows(0).Item("hora").ToString, dsMorador.Tables(0).Rows(0).Item("nome").ToString, dsGrupo.Tables(0).Rows(0).Item("torre").ToString + " / " + dsMorador.Tables(0).Rows(0).Item("unidade").ToString, dsMorador.Tables(0).Rows(0).Item("cartao").ToString, dsPorta.Tables(0).Rows(0).Item("nome").ToString)
       End If
     End While
   End If
 End Sub
 Private Delegate Sub AddItemsDelegate(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
 Private Sub addItToLBLPrincipal(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
   lblAcessoPrincipal.Text = acesso.ToString
   lblGrupoPrincipal.Text = grupo.ToString
   lblNomePrincipal.Text = morador.ToString
   lblLegenda1.Text = leganda.ToString
   If File.Exists("I:\" + cartaMorador.ToString + ".jpg") Then
     picFotoPrincipal.Image = Image.FromFile("I:\" + cartaMorador.ToString + ".jpg")
   Else
     picFotoPrincipal.Image = Image.FromFile(IO.Path.Combine(Application.StartupPath, "images\globo.png"))
   End If

 End Sub

 Public Sub carregaDados2()
   Dim j As Integer = 1
   Dim dsAcesso As New DataSet
   Dim dsMorador As New DataSet()
   Dim dsGrupo As New DataSet
   Dim dsPorta As New DataSet()
   dsPorta = ClassNegociosAcessoPortasIP.VerificaPortasIPVisualizador("2")
   If dsPorta.Tables(0).Rows.Count > 0 Then
     While True
       dsAcesso = ClassNegociosAcessoPortasIP.VerificaAcessoPortasIP(dsPorta.Tables(0).Rows(0).Item("id").ToString)
       If dsAcesso.Tables(0).Rows.Count > 0 Then
         dsMorador = ClassNegociosMoradores.VerificaMoradorLocal(dsAcesso.Tables(0).Rows(0).Item("codigo_morador").ToString)
         dsGrupo = ClassNegociosGrupo.VerificaGrupoLocalIdentificado(dsMorador.Tables(0).Rows(0).Item("codigo_grupo").ToString)

         Me.Invoke(New AddItemsDelegateComum1(AddressOf addItToLBLComum1), dsAcesso.Tables(0).Rows(0).Item("data") + " " + dsAcesso.Tables(0).Rows(0).Item("hora").ToString, dsMorador.Tables(0).Rows(0).Item("nome").ToString, dsGrupo.Tables(0).Rows(0).Item("torre").ToString + " / " + dsMorador.Tables(0).Rows(0).Item("unidade").ToString, dsMorador.Tables(0).Rows(0).Item("cartao").ToString, dsPorta.Tables(0).Rows(0).Item("nome").ToString)
       End If
     End While
   End If
 End Sub
 Private Delegate Sub AddItemsDelegateComum1(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
 Private Sub addItToLBLComum1(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
   lblAcessoComum1.Text = acesso.ToString
   lblGrupoComum1.Text = grupo.ToString
   lblNomeComum1.Text = morador.ToString
   lblLegenda2.Text = leganda.ToString
   If File.Exists("I:\" + cartaMorador.ToString + ".jpg") Then
     picFotoComum1.Image = Image.FromFile("I:\" + cartaMorador.ToString + ".jpg")
   Else
     picFotoComum1.Image = Image.FromFile(IO.Path.Combine(Application.StartupPath, "images\globo.png"))
   End If

 End Sub

 Public Sub carregaDados3()
   Dim j As Integer = 1
   Dim dsAcesso As New DataSet
   Dim dsMorador As New DataSet()
   Dim dsGrupo As New DataSet
   Dim dsPorta As New DataSet()
   dsPorta = ClassNegociosAcessoPortasIP.VerificaPortasIPVisualizador("3")
   If dsPorta.Tables(0).Rows.Count > 0 Then
     While True
       dsAcesso = ClassNegociosAcessoPortasIP.VerificaAcessoPortasIP(dsPorta.Tables(0).Rows(0).Item("id").ToString)
       If dsAcesso.Tables(0).Rows.Count > 0 Then
         dsMorador = ClassNegociosMoradores.VerificaMoradorLocal(dsAcesso.Tables(0).Rows(0).Item("codigo_morador").ToString)
         dsGrupo = ClassNegociosGrupo.VerificaGrupoLocalIdentificado(dsMorador.Tables(0).Rows(0).Item("codigo_grupo").ToString)

         Me.Invoke(New AddItemsDelegateComum2(AddressOf addItToLBLComum2), dsAcesso.Tables(0).Rows(0).Item("data") + " " + dsAcesso.Tables(0).Rows(0).Item("hora").ToString, dsMorador.Tables(0).Rows(0).Item("nome").ToString, dsGrupo.Tables(0).Rows(0).Item("torre").ToString + " / " + dsMorador.Tables(0).Rows(0).Item("unidade").ToString, dsMorador.Tables(0).Rows(0).Item("cartao").ToString, dsPorta.Tables(0).Rows(0).Item("nome").ToString)
       End If
     End While
   End If
 End Sub
 Private Delegate Sub AddItemsDelegateComum2(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
 Private Sub addItToLBLComum2(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
   lblAcessoComum2.Text = acesso.ToString
   lblGrupoComum2.Text = grupo.ToString
   lblNomeComum2.Text = morador.ToString
   lblLegenda3.Text = leganda.ToString
   If File.Exists("I:\" + cartaMorador.ToString + ".jpg") Then
     picFotoComum2.Image = Image.FromFile("I:\" + cartaMorador.ToString + ".jpg")
   Else
     picFotoComum2.Image = Image.FromFile(IO.Path.Combine(Application.StartupPath, "images\globo.png"))
   End If
 End Sub

 Public Sub carregaDados4()
   Dim j As Integer = 1
   Dim dsAcesso As New DataSet
   Dim dsMorador As New DataSet()
   Dim dsGrupo As New DataSet
   Dim dsPorta As New DataSet()
   dsPorta = ClassNegociosAcessoPortasIP.VerificaPortasIPVisualizador("4")
   If dsPorta.Tables(0).Rows.Count > 0 Then
     While True
       dsAcesso = ClassNegociosAcessoPortasIP.VerificaAcessoPortasIP(dsPorta.Tables(0).Rows(0).Item("id").ToString)
       If dsAcesso.Tables(0).Rows.Count > 0 Then
         dsMorador = ClassNegociosMoradores.VerificaMoradorLocal(dsAcesso.Tables(0).Rows(0).Item("codigo_morador").ToString)
         dsGrupo = ClassNegociosGrupo.VerificaGrupoLocalIdentificado(dsMorador.Tables(0).Rows(0).Item("codigo_grupo").ToString)

         Me.Invoke(New AddItemsDelegateComum3(AddressOf addItToLBLComum3), dsAcesso.Tables(0).Rows(0).Item("data") + " " + dsAcesso.Tables(0).Rows(0).Item("hora").ToString, dsMorador.Tables(0).Rows(0).Item("nome").ToString, dsGrupo.Tables(0).Rows(0).Item("torre").ToString + " / " + dsMorador.Tables(0).Rows(0).Item("unidade").ToString, dsMorador.Tables(0).Rows(0).Item("cartao").ToString, dsPorta.Tables(0).Rows(0).Item("nome").ToString)
       End If
     End While
   End If
 End Sub
 Private Delegate Sub AddItemsDelegateComum3(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
 Private Sub addItToLBLComum3(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
   lblAcessoComum3.Text = acesso.ToString
   lblGrupoComum3.Text = grupo.ToString
   lblNomeComum3.Text = morador.ToString
   lblLegenda4.Text = leganda.ToString
   If File.Exists("I:\" + cartaMorador.ToString + ".jpg") Then
     picFotoComum3.Image = Image.FromFile("I:\" + cartaMorador.ToString + ".jpg")
   Else
     picFotoComum3.Image = Image.FromFile(IO.Path.Combine(Application.StartupPath, "images\globo.png"))
   End If
 End Sub
 Public Sub carregaDados5()
   Dim j As Integer = 1
   Dim dsAcesso As New DataSet
   Dim dsMorador As New DataSet()
   Dim dsGrupo As New DataSet
   Dim dsPorta As New DataSet()
   dsPorta = ClassNegociosAcessoPortasIP.VerificaPortasIPVisualizador("5")
   If dsPorta.Tables(0).Rows.Count > 0 Then
     While True
       dsAcesso = ClassNegociosAcessoPortasIP.VerificaAcessoPortasIP(dsPorta.Tables(0).Rows(0).Item("id").ToString)
       If dsAcesso.Tables(0).Rows.Count > 0 Then
         dsMorador = ClassNegociosMoradores.VerificaMoradorLocal(dsAcesso.Tables(0).Rows(0).Item("codigo_morador").ToString)
         dsGrupo = ClassNegociosGrupo.VerificaGrupoLocalIdentificado(dsMorador.Tables(0).Rows(0).Item("codigo_grupo").ToString)
         Me.Invoke(New AddItemsDelegateComum4(AddressOf addItToLBLComum4), dsAcesso.Tables(0).Rows(0).Item("data") + " " + dsAcesso.Tables(0).Rows(0).Item("hora").ToString, dsMorador.Tables(0).Rows(0).Item("nome").ToString, dsGrupo.Tables(0).Rows(0).Item("torre").ToString + " / " + dsMorador.Tables(0).Rows(0).Item("unidade").ToString, dsMorador.Tables(0).Rows(0).Item("cartao").ToString, dsPorta.Tables(0).Rows(0).Item("nome").ToString)
       End If
     End While
   End If
 End Sub
 Private Delegate Sub AddItemsDelegateComum4(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
 Private Sub addItToLBLComum4(ByVal acesso As String, ByVal morador As String, ByVal grupo As String, ByVal cartaMorador As String, ByVal leganda As String)
   lblAcessoComum4.Text = acesso.ToString
   lblGrupoComum4.Text = grupo.ToString
   lblNomeComum4.Text = morador.ToString
   lblLegenda5.Text = leganda.ToString
   If File.Exists("I:\" + cartaMorador.ToString + ".jpg") Then
     picFotoComum4.Image = Image.FromFile("I:\" + cartaMorador.ToString + ".jpg")
   Else
     picFotoComum4.Image = Image.FromFile(IO.Path.Combine(Application.StartupPath, "images\globo.png"))
   End If
 End Sub
End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

de forma mais emergencial tente resolver usando ThreadPoll assim:

 


   	CheckForIllegalCrossThreadCalls = False

//tente aumentar o número de máximo de threads no pool, talvez resolva  problema
   	ThreadPool.SetMaxThreads(50, 100)
   	ThreadPool.SetMinThreads(10, 20)

   	ThreadPool.QueueUserWorkItem(AddressOf me.carregadados1)
   	ThreadPool.QueueUserWorkItem(AddressOf me.carregadados2)
   	ThreadPool.QueueUserWorkItem(AddressOf me.carregadados3)
   	ThreadPool.QueueUserWorkItem(AddressOf me.carregadados4)
   	ThreadPool.QueueUserWorkItem(AddressOf me.carregadados5)

 

pergunta existe uma difrença grande de hardware entre a máquina Win7 e a máquina WinXP ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa beleza

 

Cara desculpa a demora.

Tem diferença grande de hardware sim. A máquina que esta com as imagens é um I5 com 4 gigas de memória, a máquina que fica o programinha rodando é um dual core de 2 gigas.

Cara vou testart o código e te retorno

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.