A first chance exception of type 'System.InvalidOperationExc

0

21993: Already connected
A first chance exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

Witam, mam problem i bardzo proszę o pomoc.
temat wyglada tak: jest sobie Form1 i Form2 oraz klasa ServerSocket.
W klasie głównej Form1 zadeklarowałem statycznie Form2
public stanic Form2 form2 = new Form2();

odpalam Form2
form2.ShowDialog();

pojawia się okienko, na którym są buttony i wszytsko pieknie działa ale ..
jak wcześniej wspomniałem jest jeszcze klasa ServerSocket, której zadaniem jest nasłuchiwanie na odpowiednim porcie tcp/ip. Gdy serversocket odbierze coś co nas interesuje to wykonuje metodę zawartą w form2. np.:
Form1.form2.metoda();
Zadaniem metody jest zmiana tekstu buttonów znajdujących się na Form2.
Gdy form2 jest uruchominy otrzymuje komunikat:
21993: Already connected
A first chance exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

Gdy form2 jest zamknięty wszystko działa ok.

Jak sobie z tym poradzić?

pozdrawiam

0

po pierwsze wlsciwie zaprojektowac aplikacje, bo za to co napisales inkwizycja programistow pali na stosie }:->

ServerSocket powinno po odebraniu czegos rzucic event ze cos odebralo, a w eventArgs powinno zalaczyc ten obiekt, string, co tam masz
Form2 powinno podpiac sie do tego eventu i jesli go dostanie wyswietlac te dane
nie rob Form2 static !!!

0

no właśnie zastanawiałem się czy static to dobre wyjście? na początku wydawało się, że tak ale wychodzi, że nie. :)
powalczę z tymi zdarzeniami.

0

teraz już za późno, Oni jadą po Ciebie ;p

0
exodon napisał(a)

public stanic Form2 form2 = new Form2();

Głodnemu chleb na myśli...

0

Nazwy to są masz doprawdy wyszukane
form2 form2 = new form2
chyba myślałeś nad nimi całą noc, na przemian z tym stanikiem.

0

no tak wystarczy szepnąć stanik, cycki i robi się poruszenie :D
może pogadajmy jeszcze o tym? :)
Panowie czy wiecie co to są fiszbiny? tylko nie googlować! :D

tak Pytong tak, przepraszam buhahaha

0

zrobiłem to chyba inaczej niż proponowałeś ale wydaje mi się, że jest to zgodne ze sztuką i prościej.
Co myślisz?

private Form2 form2 = new Form2();

    public void SetText2(string text)
    {
        if (form2.InvokeRequired)
        {
            form2.Invoke((EventHandler)(delegate(object sender, EventArgs e)
            {
                SetText2(text);
            }));
        }
        else
        {
            form2.xx("ble ble");
        }
    }
0

jesli jest to w klasie Form1 to ok
ale jesli w ServerSocket to fatalnie

elementy gui musza byc tworzone z glownego watku

0

tak jest to w klasie Form1 :)

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