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?