현재 이해가 안가는 이상한 문제가 있습니다. 하나의 단추가 & 하나의 richeditbox 인 간단한 GUI가 있습니다. 비동기 소켓이 실행 중이며 네트워크를 통해 gui (richeditbox)로 인쇄하려는 일부 데이터를 수신하고 있습니다. 비동기 소켓은 사용자가 버튼을 눌렀을 때 시작됩니다. 내가 네트워크 데이터를받을 때 그래서 나는 (를 Form1 클래스)처럼 보이는 여기 방법, 데이터를 출력하는 함수를 호출 :비동기 소켓이있는 Windows Forms; 텍스트 출력 없음
Public Sub AddText(ByVal text As String)
Try
Console.WriteLine(text)
RichTextBox1.AppendText(text)
RichTextBox1.AppendText(vbNewLine)
Catch e As Exception
Console.WriteLine(e.ToString())
End Try
End Sub
그럼 난 단순히 내 네트워크 클래스 또는 모듈 (그것은 중요하지 않습니다에서 Form1.AddText(..)
을 ?). 문제는 AddText
함수가 호출되고 있지만 예외가없고 오류가없고 아무것도 없다고해도 richeditbox에 아무것도 표시되지 않는다는 것입니다. 디버거를 통해 보았습니다. "text"
에는 인쇄해야하는 데이터가 포함되어 있지만 단순히 아무 것도 나타나지 않습니다. 누구나 아이디어가 있습니까?
나는 이미 그것을 시도했지만 같은 결과했습니다/ 는 개인 위임 하위 dlgUpdate (문자열로 ByVal의 텍스트) 는 하위 updateLog (문자열로 ByVal의 텍스트) 만약 진정한 RichTextBox1.InvokeRequired = 그런 다음 희미한 D로 새로운 dlgUpdate (AddressOf를 updateLog) RichTextBox1.Invoke (D, 텍스트) 그렇지 RichTextBox1.AppendText (텍스트) 최종면 끝 하위 참고 : 나는 GUI 스레드에서 호출 할 경우 updateLog 기능이 작동, 그래서 그것을 추측 그 관련이 있지만 InvokeRequired 사용 후 여전히 작동하지 않는 이유를 볼 수 없습니다. –
어 .. 그 못 생겼어, 심지어 코드에서 주석을 볼 수 없다, 나는 코드를 가져 갔다 : http://www.vbdotnetforums.com/asp-net-data-access/19740-how-use-invokerequired .html –
이것은 암시적인 제안 일 수 있지만 UI 스레드가 잠겨 있으면 텍스트를 추가 한 후에 Application.DoEvents()를 던져 볼 수 있습니다. – David