我正在嘗試將一些消息記錄到RichTextBox
控件。它記錄的第2或3,那麼將引發以下錯誤:「跨線程操作無效:從其創建線程以外的線程訪問的控件。」
"Cross-thread operation not valid: Control 'txtLog' accessed from a thread other than the thread it was created on."
這是一個非常簡單的應用程序,只是做一個pubnub訂閱。沒有嘗試穿線。
每一個問題我發現SO,我使用一個StringBuilder:
public StringBuilder logtext = new StringBuilder();
然後我想簡化事情,所以我可以只是調用log("this is a log message")
:
public void log(string txt)
{
logtext.Append(Environment.NewLine + txt);
txtLog.Text = logtext.ToString();
}
就像我說的,它會記錄幾條細線,但會嘗試記錄以下內容:
"ConnectStatus: [1,\"Connected\",\"presence\"]"
th當它拋出錯誤時。這裏是一個返回了值的代碼:
pubnub.Subscribe<string>(
chnl,
DisplayReturnMessage,
DisplayConnectStatusMessage,
DisplayErrorMessage
);
public void DisplayReturnMessage(string result)
{
log(TimeStamp() + " Result: " + result);
}
,這裏是調試器的SS如果有幫助:
請忽略的事實是TimeStamp()
字面上返回「H:MM :ss.ffff「現在:)
我能夠手動log("ConnectStatus: [1,\"Connected\",\"presence\"]")
它工作,所以我不認爲這是一個字符串問題。穿線的東西真的把我拋棄了。
不是重複的,他實際上是在使用線程。我不是(據我所知)線程或做任何類型的調用,這在整篇文章中都有提及。 –
我認爲'pubnub'使用線程是一個合理的推論。你知道任何已知的情況下,.NET錯誤地拋出異常,只是爲了笑嗎?誰更有可能完全瞭解是否有第二個線程:您或.NET運行時? –
夠公平的.... –