ソケット接続が終了したときに配列内の削除を実行しています。ちょっとしたチャットプログラムで作業しています。ユーザオブジェクトの配列から要素を削除しています。メインスレッドの変数を変更するC#
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 window.but私は各ソケットに関連付けられている3つの方法で削除メソッド(Disconnection)を実行しています。
ヘルプ?
1つのアプリケーションで複数のスレッド、または1つのメインアプリケーションに接続する複数のアプリケーションについて説明しますか? – HW90
配列の代わりにリストを使用できませんか?あなたは配列のカウンターを持つ必要はありません。 –
Reniuz
1つのアプリケーション、複数のスレッド –