Mam taki kod w backgroundWorker:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            UdpClient klient = new UdpClient(port);
            IPEndPoint adresIP = new IPEndPoint(IPAddress.Parse(adresIPSerwera), 0);
            string wiadomosc = null;
            bool a = false;
            while (true)
            {
                Byte[] bufor = klient.Receive(ref adresIP);
                string dane = Encoding.UTF8.GetString(bufor);
                string[] cmd = dane.Split(new char[] { ':' });

                switch (cmd[1])
                {
                    case "SAY":
                        if (cmd.Length > 2)
                        {
                            wiadomosc = cmd[2];
                            for (int i = 3; i < cmd.Length; i++)
                                wiadomosc += ":" + cmd[i];
                        }
                        WpiszTekst(cmd[0], wiadomosc);
                        break;

                    (...) // inne case

                    case "LIST":
                        for (int i = 2; i < cmd.Length + 1; i++)
                        {
                            foreach (string user in listBox1.Items)
                            {
                                if (user == cmd[i])
                                    a = true;
                            }
                            if (a == false)
                                SetText(cmd[i]);   <--- o to chodzi

                        }
                        break;

                  (...) // inne case

                    
                }

                
        }
     }
delegate void SetTextCallBack(string tekst);

private void SetText(string tekst)
        {
            if (listBox1.InvokeRequired)
            {
                SetTextCallBack f = new SetTextCallBack(SetText);
                this.Invoke(f, new object[] { tekst });
            }
            else
            {
                this.listBox1.Items.Add(tekst);
            }
        }

Czyli wywołanie SetText(cmd[i]) powinno mi wpisać na listbox wszystkie elementy z tablicy cmd[2+], których jeszcze tam nie ma. Ale jak to odpalam to ani nie dopisuje do listbox tego co powinien a dodatkowo nawet nie widzi wiadomości z cmd[1] = "SAY" (wiadomości przychodzące nie są wypisywane)... Jak tą linijkę zakomentuję to wtedy normalnie wiadomości dochodzą... Dodatkowo jak wstawię jakiegoś buttona i w nim umieszczę metodę SetText("cos tam") to wypisuje normalnie...

Ma ktoś pomysł co tutaj jest nie tak ?

Z góry dziekuję za pomoc.