以下のコードサンプルを使用しています-
Program.cs には、次のようなクライアントのリストがあります。
public static List<Client> clients = new List<Client>();
button1 のクリックのイベント ハンドラーを使用する
private void button1_Click(object sender, EventArgs e)
{
Client client = new Client(combobox1.selecteditem);
Program.clients.Add(client);
}
Client.cs
すべての変数は非静的でパブリックです。パケット受信時にクラスが呼び出されるイベントハンドラがあり、このクラスはフィルタリングされて処理されます
次のコードで呼び出されます。
public void recieved(short op, string str, Client c)
{
switch (op)
{
case (short)OpCodes.matches:
{
c.something(c, str);
break;
}
}
}
Handler.cs
public void something(Client c, string movement)
{
if (movement == null)
c.coords = movement;
c.freeSpot = true;
}
上記の ^ では、変数がオーバーラップし、すべてのインスタンスで freespot が true になります。
1 つのインスタンスで問題なく動作します。しかし、複数のインスタンスでコンパイルしようとしています。したがって、button_onclick
を作成すると、上記を使用して新しいインスタンスが作成されます。
プログラムの実行中、1 つのインスタンスでは問題なく実行されますが、2 つ以上のインスタンスでは変数がMyClass
重複し始めます。これを防ぐ方法はありますか?