ソケット接続が終了したときに、配列で削除を行っています。ちょっとしたチャット プログラムに取り組んでいます。ユーザー オブジェクトの配列から要素を削除しています。
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ウィンドウで宣言されていることですが、各ソケットに関連付けられたスレッドで削除メソッド(切断)を実行しています。
ヘルプ?