Array
(
)

Retornar valor da Thread para a view

Aruã Magalhães
   - 17 jul 2014

Bom dia pessoal, tenho um problema, preciso que uma Thread tenha o seu valor retornado para a view, eu estou utilizando o asp.net mvc 3 utilizando razor , o método que eu chamo a thread é passado por ajax.
Segue código

#Código


ajax 

.ajax({
                     type: 'post',
                     datatype: 'json',
                     url: '@Url.Action("Logon", "Atendimento")',
                     data: { ramal: '9081', id: '299', senha: '060492', maquinaCTI: '192.168.0.9', tipoIntervalo: '0' },
                     success: function (data) {
}
});


controller 

Thread t = new Thread(() =>re.WriteY(analista.conexao));

            t.Start();
            Thread.Sleep(1000);

 return Json(new {a = analista });


método WriteY

 public void WriteY(Socket s)
        {
            AtendimentoBussines atendeBussines = new AtendimentoBussines();
            
            while (true)
            {
              atendeBussines.ReceiveCTI(s);
            }

        }


método receiveCTI
        public void ReceiveCTI(Socket conexao)
        {
            bytesRec = conexao.Receive(bytesLength);
            receive = Encoding.UTF8.GetString(bytesLength, 0, bytesRec);
            msgByte = Encoding.UTF8.GetBytes(receive);
            AnalistaBean analista = new AnalistaBean();

            switch (msgByte[2])
            {
                case Pacotes.PACOTE_TRATA_LOGON:
                  //return 
                      tratPacotes.tratamentoLogin(msgByte, receive);
                    
                break;
}
}


método que eu preciso retornar as informações para a view
        public AnalistaBean tratamentoLogin(byte[] buf, string resposta)
        {
            // A última posição significa qual vai ser o tratamento que o usuário vai ter de retorno.
            int respLogonCTI = buf[3];
            AnalistaBean analista = new AnalistaBean();

            switch (respLogonCTI)
            {
                case 2: // usuário logado

                analista.respostaLogado = true;
                    
                    return analista;
                    break;
}
}

Joel Rodrigues
   - 18 jul 2014

A função que está em success está sendo executada? Você já tentou tratar o retorno?