Я использую пример кода ниже -Несколько экземпляров, Проблемы с перекрытием переменных C#
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
Все переменные не являются статичными и общественности. Существует EventHandler, где на прием пакетов, класс называется, этот класс затем фильтрует и обрабатывает
его называют в следующем коде:
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 будет выполняться по всем экземплярам.
Он будет работать нормально с одним экземпляром. Но я пытаюсь скомпилировать несколько экземпляров. Таким образом, создание button_onclick
создаст новый экземпляр, используя приведенное выше.
Поскольку программа запущена, она работает безупречно на одном экземпляре, но с экземплярами 2+ переменные в MyClass
начинают перекрываться. Есть ли способ предотвратить это?
Если вы используете визуальную студию, попробуйте использовать ее замечательный отладчик и отслеживайте все экземпляры разницы Клиента, предоставив им, например, уникальный код ID – Patashu
. Каким выглядит код, который вызывает «полученный» (...) '? –
код, вызывающий полученный (...), является обработчиком событий – user2309449