C # 채팅 응용 프로그램 appendtext 문제를 일으키는 것
-
12-12-2019 - |
문제
나는 제게 문제를 일으키는 1 줄의 코드와 함께 원하는대로 작동하는 채팅 응용 프로그램을 작성했습니다.
내 mainform에서는 다음과 같습니다 :
ChatBox cb = new ChatBox(person);
this.AddOwnedForm(cb);
cb.Show();
.
이렇게하면 내 채팅 상자에 텍스트를 추가하려고하면이 작업을 한 번만 사용할 수 있습니다.
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;
}
}
.
AppEndText 라인이 프로그램을 한 번 열리고 잘 닫히지 만, 다른 것을 열려고하면 동결됩니다.이 코드 줄이 없으면 응용 프로그램이 잘 작동합니다.나는 그것이 올바르게 끝나지 않거나 그 선을 따라 무언가를 끝내지 않는 문제일지도 모른다고 믿습니다.
이 문제에 대한 도움이 크게 감사 할 것입니다.내가 그것이 가난하게 묻고 묻고 나가는 일을 잘 설명하고 더 나은 직업을하십시오.
편집 :
나는 대리인을 사용해 보았지만 여전히 같은 문제가 발생합니다.
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 });
}
}
.
정말로 나에게 그루터기를 쳤습니다. /.
해결책
사용자 스레드에서 텍스트를 설정하려고합니다.Control.Enabled
는 다른 스레드에서 잘 작동하지만 텍스트와 같은 값을 설정할 수는 없습니다.따라서 주 스레드에 텍스트를 추가하십시오.displayBox.Invoke
메소드를 사용하여이를 수행 할 수 있습니다.
제휴하지 않습니다 StackOverflow