Pregunta

He escrito una aplicación de chat que está trabajando según se desee de 1 línea de código que me está causando problemas.

En mi forma principal tengo:

        ChatBox cb = new ChatBox(person); 
        this.AddOwnedForm(cb);
        cb.Show();

Esto está mostrando mi chatbox, el problema es que esto solo se puede usar una vez si intento agregar texto en mi hilo de chatbox:

        if (Ex.Message.Contains("chat ended"))
           {
             entryBox.Enabled = false;
             send.Enabled = false;
            if (displayBox.Enabled == true)
               {
                displayBox.AppendText("The User has left chat" + Environment.NewLine); // <- PROBLEM LINE OF CODE
                displayBox.Enabled = false; 
               }
           }

Con la línea Appendtext no comprometida de que el programa abrirá un cuadro de chat una vez y cierre la multa, pero se congela si intento abrir otro.Sin esta línea de código, la aplicación funciona bien.Creo que puede ser un problema con el hilo que no termina correctamente o algo así.

Cualquier ayuda sobre este tema sería muy apreciado.Si lo he explicado mal, solo pregunte y intente intentarlo y hacer un mejor trabajo.

Editar:

Intenté usar un delegado, pero todavía estoy recibiendo el mismo problema.

private void setDisplayBox(RichTextBox db)
    {
        if (this.InvokeRequired == false)
        {
            db.SelectionColor = Color.Red;
            db.AppendText("The User has left chat" + Environment.NewLine);
        }
        else
        {
        SetDisplayBox setDb = new SetDisplayBox(setDisplayBox);
        this.Invoke(setDb, new object[] { db });
        }
    }

Esto realmente me ha perplejo ahora: /.

¿Fue útil?

Solución

Creo que está tratando de establecer el texto en su hilo de usuario.Control.Enabled funcionará bien en otro hilo, pero no puede establecer ningún valor como el texto allí.Así que agrega el texto en su hilo principal.Puede usar el método displayBox.Invoke para lograr esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top