我正在寫一個包裝類,圍繞TcpClient
,當數據到達時引發一個事件。我正在使用BeginRead
和EndRead
,但是當父窗體處理該事件時,它不在UI線程上運行。我是否需要使用委託並將該上下文傳遞給回調?我認爲回調是避免這種方式...如何安全地在AsyncCallback中引發事件?
void ReadCallback(IAsyncResult ar)
{
int length = _tcpClient.GetStream().EndRead(ar);
_stringBuilder.Append(ByteArrayToString(_buffer, length));
BeginRead();
OnStringArrival(EventArgs.Empty);
}
代表的問題是什麼? – 2010-05-27 06:18:30