RichTextBox
컨트롤에 일부 메시지를 기록하려고합니다. 이것은 단지 하나의 pubnub 가입을하는 매우 간단한 응용 프로그램은"크로스 스레드 작업이 유효하지 않습니다 : 생성 된 스레드 이외의 스레드에서 액세스 된 컨트롤입니다."
"Cross-thread operation not valid: Control 'txtLog' accessed from a thread other than the thread it was created on."
: 그것은 처음 2 또는 3 로그온 한 후 다음과 같은 오류가 발생합니다. 스레딩 시도가 없었습니다. 내가 SO에 발견 다른 질문 당
, 나는 모두 StringBuilder를 사용하고 있습니다 :public void log(string txt)
{
logtext.Append(Environment.NewLine + txt);
txtLog.Text = logtext.ToString();
}
을 내가 말했듯이, : 난 그냥 log("this is a log message")
를 호출 할 수 있도록
public StringBuilder logtext = new StringBuilder();
은 그 때 나는 일을 단순화하고 싶었다 그것은 몇 가지 문자열을 잘 기록하지만 다음 로그를 시도합니다 :
"ConnectStatus: [1,\"Connected\",\"presence\"]"
th 오류가 발생했을 때 도움이된다면 여기
pubnub.Subscribe<string>(
chnl,
DisplayReturnMessage,
DisplayConnectStatusMessage,
DisplayErrorMessage
);
public void DisplayReturnMessage(string result)
{
log(TimeStamp() + " Result: " + result);
}
그리고 디버거의 SS됩니다 : mm :
TimeStamp()
그대로 "H를 반환하는 사실을 무시하십시오 여기에 그 값을 반환하는 코드입니다 : ss.ffff "now :
나는 수동으로 log("ConnectStatus: [1,\"Connected\",\"presence\"]")
을 사용할 수 있었고 효과가있어서 문자열 문제라고 생각하지 않습니다. 실을 꿰고있는 것은 정말로 나를 쫓아 내고있다.
public void log(string txt)
{
logtext.Append(Environment.NewLine + txt);
txtLog.Invoke(new Action(delegate { txtLog.Text = logtext.ToString(); }));
}
지금 작동 : 중복 된 질문을 바탕으로
는
실제로 중복되지는 않지만 실제로 스레드를 사용하고 있습니다. 나는 (내가 알고있는 한, 모든 게시물에 언급 된) 모든 유형의 호출 또는 스레딩을하지는 않습니다. –
''pubnub''가 스레딩을 사용하고 있다는 것이 합리적이라고 생각합니다. .NET이 그 예외를 실수로 throw하는 알려진 사례를 알고 계십니까? 두 번째 스레드가 있는지 여부에 대한 완전한 지식을 가진 사람은 누구입니까? You 또는 .NET 런타임? –
충분히 공정하게 .... –