C # Applicazione chat AppendText causa problemi
-
12-12-2019 - |
Domanda
Ho scritto un'applicazione di chat che funziona come desiderata a parte 1 linea di codice che mi sta causando problemi.
Nel mio mainform ho:
ChatBox cb = new ChatBox(person);
this.AddOwnedForm(cb);
cb.Show();
.
Questo sta visualizzando la mia chatbox, il problema è che questo può essere utilizzato solo una volta se provo ad aggiungere il testo nella mia thread 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 linea APPENDTEXT non ha commentato quel programma aprirà una casella di chat una volta e chiuderà fine, ma si bloccherà se cercherò di aprirne un altro.Senza questa linea di codice l'applicazione funziona bene.Credo che potrebbe essere un problema con il filo che non termina correttamente o qualcosa lungo quelle linee.
Qualsiasi aiuto su questo problema sarebbe molto apprezzato.Se l'ho spiegato male, chiedi e malato prova a fare un lavoro migliore.
Modifica:
Ho provato a usare un delegato ma sto ancora ottenendo lo stesso 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 });
}
}
.
Questo mi ha davvero strampato ora: /.
Soluzione
Penso che stiate cercando di impostare il testo nella tua discussione dell'utente.Control.Enabled
funzionerà bene in un altro thread ma non è possibile impostare alcun valore come il testo laggiù.Quindi aggiunge il testo nel tuo thread principale.È possibile utilizzare il metodo displayBox.Invoke
per ottenere questo.