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