none
Thread Completa - ASP.Net + Vb.Net RRS feed

  • Pergunta

  • Pessoal, bom dia...

    Estou desenvolvendo uma aplicação de Cadastro de Solicitação e estou com a seguinte necessidade...

    Quando a pessoal clicar em Salvar, Ocultar Todos os campos, e exibir uma imagem de "Carregando" e quando terminar, redirecionar para uma outra página...


    Então Eu criei uma thread onde faz um cadastro em banco sql, ele exibe a imagem após clicar, porém eu não estou conseguindo redirecionar após terminar de executar a thread.

    Meu código está assim

    Protected Sub btSalvar_Click(sender As Object, e As ImageClickEventArgs) Handles btSalvar.Click
            If cbAmbiente.Text = "" _
            Or cbEquipamento.Text = "" _
            Or cbUsuario.Text = "" _
            Or txtAssunto.Text = "" _
            Or txtIncidente.Text = "" Then
                lblMensagem.Visible = True
                lblMensagem.Text = " ****** Favor informar Todos os Campos ******"
                lblMensagem.ForeColor = Drawing.Color.Red
                Exit Sub
            End If
    
            ' Oculta Labels
            lblAmbiente.Visible = False
            lblAnexo.Visible = False
            lblAssunto.Visible = False
            lblEquipamento.Visible = False
            lblIncidente.Visible = False
            lblUsuario.Visible = False
            ' Oculta Comboboxs
            cbUsuario.Visible = False
            cbEquipamento.Visible = False
            cbAmbiente.Visible = False
            ' Oculta FileUpload
            fuAnexo.Visible = False
            ' Oculta Textbox
            txtAssunto.Visible = False
            txtIncidente.Visible = False
            ' Oculta Botões
            btSalvar.Visible = False
            btCancelar.Visible = False
            ' Oculta Links
            lnkCancelar.Visible = False
            lnkSalvar.Visible = False
    
            With lblMensagem
                .Visible = True
                .Text = "Carregando ... "
            End With
    
            With imgCarregando
                .Visible = True
                .DataBind()
            End With
    
        End Sub
    
    Dim WithEvents t1 As Solicitacao
    
        Protected Sub imgCarregando_DataBinding(sender As Object, e As EventArgs) Handles imgCarregando.DataBinding
            Dim sSolicitacao As New Solicitacao
    
            t1 = New Solicitacao
    
            With sSolicitacao
                .AmbienteID = cbAmbiente.SelectedValue
                .Assunto = txtAssunto.Text
                .DataCadastro = Now
                .EquipamentoID = cbEquipamento.SelectedValue
                .fuAnexo = fuAnexo
                .FuncionarioID = cbUsuario.SelectedValue
                .Incidente = txtIncidente.Text
                .lblMensagem = lblMensagem
            End With
    
            Dim t As Thread = New Thread(AddressOf sSolicitacao.Salvar)
            t.Start()
        End Sub
    
        Sub AreaEventHandler(ByVal Completa As Boolean) Handles t1.ThreadCompleta
            If Completa = True Then
    Response.Redirect("Sucesso.aspx")
            End If
    
        End Sub
    
    

    E eu criei tb essa classe

    Imports Microsoft.VisualBasic
    Imports System.IO
    Public Class Solicitacao
        Public FuncionarioID As Integer
        Public DataCadastro As DateTime
        Public Assunto As String
        Public Incidente As String
        Public EquipamentoID As Integer
        Public AmbienteID As Integer
        Public fuAnexo As FileUpload
        Public lblMensagem As Label
    
        Public Event ThreadCompleta(ByVal Completa As Boolean)
    
        Public Sub Salvar()
            ' Verifica se a solicitação tem anexo
            If fuAnexo.HasFile Then
    
                ' Atribui informações do arquivo nas variaveis
                Dim NomeAnexo As String = Path.GetFileNameWithoutExtension(fuAnexo.PostedFile.FileName)
                Dim Extensao As String = Path.GetExtension(fuAnexo.PostedFile.FileName)
                Dim Tamanho As Integer = fuAnexo.PostedFile.InputStream.Length
    
                ' Lê o arquivo e converte em Binário
                Dim ArquivoByte As Byte() = New Byte(Tamanho) {}
    
                fuAnexo.PostedFile.InputStream.Read(ArquivoByte, 0, Tamanho)
    
                ' Comando da Storaded Procedure caso tenha anexo
                Cmd.CommandText = "uspCadastraSolicitacao @FuncionarioID, " & _
                                                         "@DataCadastro, " & _
                                                         "@Assunto, " & _
                                                         "@Descricao, " & _
                                                         "@EquipamentoID, " & _
                                                         "@AmbienteID, " & _
                                                         "@Anexo, " & _
                                                         "@Extensao, " & _
                                                         "@Tamanho, " & _
                                                         "@NomeAnexo"
    
    
                ' Adiciona parametros ao comando com valores, caso tenha anexo
                Cmd.Parameters.AddWithValue("@Anexo", ArquivoByte)
                Cmd.Parameters.AddWithValue("@Extensao", Extensao)
                Cmd.Parameters.AddWithValue("@Tamanho", Tamanho)
                Cmd.Parameters.AddWithValue("@NomeAnexo", NomeAnexo)
            Else
                ' Definição do comando caso não tenha anexo
                Cmd.CommandText = "uspCadastraSolicitacao @FuncionarioID, " & _
                                                         "@DataCadastro, " & _
                                                         "@Assunto, " & _
                                                         "@Descricao, " & _
                                                         "@EquipamentoID, " & _
                                                         "@AmbienteID, " & _
                                                         "NULL, " & _
                                                         "NULL, " & _
                                                         "NULL, " & _
                                                         "NULL"
            End If
    
            ' Parametros padrões de inserção
            Cmd.Parameters.AddWithValue("@FuncionarioID", FuncionarioID)
            Cmd.Parameters.AddWithValue("@DataCadastro", DataCadastro)
            Cmd.Parameters.AddWithValue("@Assunto", Assunto)
            Cmd.Parameters.AddWithValue("@Descricao", Incidente)
            Cmd.Parameters.AddWithValue("@EquipamentoID", EquipamentoID)
            Cmd.Parameters.AddWithValue("@AmbienteID", AmbienteID)
    
            Try
                ' Abre conexão
                Conn.Open()
                Cmd.Connection = Conn
                Try
                    ' Executa inserção
                    Cmd.ExecuteNonQuery()
                    ' Fecha conexão
                    Conn.Close()
                Catch ex As Exception
                    ' Informa erro ao cadastrar solicitação
                    lblMensagem.Text = "Erro ao tentar cadastrar solicitação. Favor informar ao TI. Erro: " & ex.Message
                    Conn.Close()
                    ' Fecha conexão
                    Exit Sub
                End Try
            Catch ex As Exception
                ' Informa erro ao abrir conexão
                lblMensagem.Text = "Erro ao tentar cadastrar solicitação. Favor informar ao TI. Erro: " & ex.Message
            End Try
    
            RaiseEvent ThreadCompleta(True)
        End Sub
    End Class

    quinta-feira, 31 de janeiro de 2013 10:07

Respostas

  • Veja

    http://www.codeproject.com/Articles/18238/The-UpdateProgress-Control-of-ASP-NET-AJAX-Extensi


    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    quarta-feira, 20 de fevereiro de 2013 16:14
    Moderador

Todas as Respostas