문제

나는 제게 문제를 일으키는 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 메소드를 사용하여이를 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top