当套接字连接终止时,我正在数组中进行删除。我正在开发一个小聊天程序。我正在从用户对象数组中删除一个元素。
public class User
{
private Thread clthread;
private string name;
private Socket sock;
public User(string _name, Thread _thread, Socket _sock)
{
sock = socket();
clthread = _thread;
name = _name;
sock = _sock;
}
private Socket socket()
{
return new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}//initiaza socket nou
public Thread CLThread
{
get { return clthread; }
set { clthread = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
public Socket Sock
{
get { return sock; }
set { sock = value; }
}
}
数组声明如下:
User[] connected = new User[1024];
这就是我删除的方式
private void Disconnection(int id)
{
User client = connected[id];
for (int i = id; i < no - 1; i++)
{
connected[i] = connected[i + 1];
}
client.Sock.Close();
client.CLThread.Abort();
no--;
MessageBox.Show(no.ToString());
//ui clean
}
问题是用户数组的计数器是在主 wpf 窗口中声明的。但是我正在与每个套接字关联的线程中执行删除方法(断开连接)。
帮助?