public string readMessage()
{
string message;
message = inputStream.ReadLine();
return message;
}
這就是我在主窗體類處理TCP流
現在看起來是這樣的:
void Refresh(object sender, EventArgs e)
{
Thread.Sleep(1000);
n+=1;
label1.Text = Convert.ToString(n);
}
public void update()
{
Channel.AppendText(irc.readMessage());
}
void WORK()
{
while(true)
{
Channel.Invoke(new MethodInvoker(() => update()));
}
}
工作是由線程調用的方法,同時刷新是由一種叫做方法定時器週期性地設置主線程休息,所以另一個線程可以做它的工作
它讓它運行...直到它到達當前流的結尾並再次凍結,直到有一個新的輸入它快速寫入文本框並再次凍結,這正是我不想要的。
編輯:我設法讓它與tcp.SenderTimeout一起工作,將超時設置爲幾個毫秒,並且只更新一次聊天,但仍然感覺真的沒有響應。 有沒有辦法讓它在後臺運行更平滑?因爲Ill還必須在運行時工作並響應輸入。
沒有人能夠幫助你,因爲我們不知道你在說什麼。向我們展示一些代碼,描述您正在嘗試執行的操作,提出一個問題...... – pm100
假設您使用WinForms,如果要更改其他線程的UI組件狀態,則需要使用Invoke(Delegate方法)而不是創建UI組件的線程。你可以使用InvokeRequired來檢查你是否需要使用Invoke() – Yoztastic
這該死的格式化刪除了我的代碼 – user3717941