1
我使用了一個組件在C#中的套接字連接如何從事件退出線程模式
我通過線程連接10個tcp對象到服務器。 和我在一個事件recived數據(Data_OnRecived)
這裏是我的代碼:
//連接功能
private void Connect(object State)
{
Tcp tcp = (Tcp)State;
TcpSession tcpSession = new TcpSession();
tcpSession.RemoteEndPoint = new Dart.Sockets.IPEndPoint(IP, Convert.ToInt32(Port));
tcpSession.ConnectTimeout = 1;
try
{
tcp.Connect(tcpSession);
}
catch(System.Net.Sockets.SocketException ex) {
tcp.Marshal(ex);
}
}
//初始TCP組件
private void TcpInitialize()
{
for (int i = 0; i < MaxConnection; i++)
{
SocketControl[i].TCPConnection = new Tcp();
SocketControl[i].TCPConnection.Data += new System.EventHandler<Dart.Sockets.DataEventArgs>(this.tcp_Data);
SocketControl[i].TCPConnection.Start(Connect, SocketControl[i].TCPConnection);
SocketControl[i].TCPConnection.Tag = i;
}
}
和TCP_Data數據收集時觸發的事件處理程序:
void tcp_Data(object sender, Dart.Sockets.DataEventArgs e)
{
TCP tcp = (TCP) Sender;
int GlobalVariable = tcp.Tag;
}
我的問題是在這裏,tcp_Data將以線程模式運行,而不是在Queque中並逐個運行。我可以改變它,這個事件不會在線程模式下啓動?我的意思是每個收到的數據,在另一個數據後觸發tcp_Data。
感謝任何幫助
@urs它沒有改變任何事情。當我調試這段代碼時,我可以看到它在線程模式下執行。 – Elahe 2014-10-12 09:03:11
「線程模式」是什麼意思?你的陳述與這個答案有什麼關係? – usr 2014-10-12 09:17:46
我希望tcp_Data中不能有多於一個線程。 – Elahe 2014-10-12 10:05:26