problem ze zmianą tekstu labela

0

Witam
jestem w trakcie pisania gry w kółko i krzyżyk przez sieć z użyciem tcp/ip ,w grze mam funkcję, która po stronie serwera sprawdza, czy nie ma wygranego układu,w razie zaistnienia zwiększa wynik, powinna zmienić tekst labela z wynikiem i przesłać info do klienta, wygląda to tak:

Funkcja SprawdzenieCzyWygrana wywoływana jest w innej funkcji, która wywoływana jest albo ze zdarzenia click po stronie serwera albo z wątku, który nasłuchuje wiadomości od klienta.

private void SprawdzenieCzyWygrana()
        {
            int i = 0;
            if (statyczne.SprawdzenieWygranej(listaButtonowPole, znakGry) == 1)
            {
                MessageBox.Show("Wygrał gracz "+ znakGry+"!");
                i = 11;
                newGame.graTrwa = false;
                newGame.serwerScore++;
                serwerWynikLiczbaLabel.Text = newGame.serwerScore.ToString();
            }
            else if (statyczne.SprawdzenieWygranej(listaButtonowPole, znakGry) == 2)
            {       
                if (znakGry=="X")
                {
                    MessageBox.Show("Wygrał gracz 0!");
                    newGame.graTrwa = false;
                }
                else
                {
                    MessageBox.Show("Wygrał gracz X!");
                    newGame.graTrwa = false;
                }
                i = 12;
                newGame.klientScore++;
                klientScoreLiczbaLabel.Text = newGame.klientScore.ToString();
            }            
            if (i == 11)
            {
                MessageBox.Show("wyslano i" + i.ToString());
                writer = new BinaryWriter(externalClient.GetStream());
                writer.Write(kodDlaWiadomosciZGry + i.ToString());                
            }
            else if (i==12)
            {
                MessageBox.Show("wyslano i" + i.ToString());
                writer = new BinaryWriter(externalClient.GetStream());
                writer.Write(kodDlaWiadomosciZGry + i.ToString());                
            }
        }

Problem jest taki, że w przypadku:

 if (statyczne.SprawdzenieWygranej(listaButtonowPole, znakGry) == 1)

wszystko działa ok, natomiast w przypadku

else if (statyczne.SprawdzenieWygranej(listaButtonowPole, znakGry) == 2)

kompilator od momentu

klientScoreLiczbaLabel.Text = newGame.klientScore.ToString();

ucina funkcje, nie wykonuje nic dalej, nie pojawia się żaden błąd,po prostu dalsze linijki kodu nie są wykonane, jeśli wykreśle powyższa linijke wszystko sie wykonuje poprawnie, klient otrzymuje wiadomość itd, sprawdzałem też zmienne i warunki, wszystko działa poprawnie,pod warunkiem, że nie ma tej zmiany labela, dziwi mnie to tym bardziej, że w pierwszym warunku też jest zmiana labela, a funkcji nie ucina

problem rozwiązałem, tak, że zmiane tekstu labeli dałem w osobnym wątku i jest ok, ale chciałbym wiedzieć, czemu tutaj nie działa

0

problem rozwiązamy, funkcja była wywoływana w try catchu, a treść catcha była zakomentowana, przepraszam za spam...

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0