[C#] Wątek nie może dostać dostępu do richtextboxa


(Infernowhite2) #1

Cześć.

Mam taki oto kod:

Thread main;


        public void bomb()

        {

            string link = textBox1.Text;



            for (int i = 0; i <= richTextBox1.Lines.Length; i++)

            {

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://" + link + "/");

                WebProxy myproxy = new WebProxy(this.richTextBox1.Lines[i], false);

                //request.Proxy = myproxy;

                request.Method = "GET";

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                label1.Invoke((MethodInvoker)delegate { label1.Text = i.ToString(); });

            }



        }


        private void button1_Click(object sender, EventArgs e)

        {


            main = new Thread(bomb);

            main.Start();


        }

Jednak tutaj zaczyna się problem. Kiedy pobieram tekst z textboxa:

string link = textBox1.Text;

Jest wszystko dobrze. Ale kiedy chcę dostać liczbę linii:

for (int i = 0; i <= richTextBox1.Lines.Length; i++)

Podczas pracy programu, program się zatrzymuje i podświetla mi to:

richTextBox1.Lines.Length

I dostaję błąd:

Rozumiem gdybym chciał ustawić tekst w nim to zrobiłbym invoke'a, ale przy pobieraniu?

Pobieranie tekstu z tej kontrolki działa jak należy, ale pobieranie ilości linii już nie.

Szukałem w Google'ach ale ten problem występuje z ustawianiem tekstu a nie z pobieraniem linii.

Z góry dzięki za pomoc.


(nnick) #2
Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>

{

                    textBox1.Text="cośtam";

}));

(Infernowhite2) #3

Przecież ustawić mogę tylko wątek nie może pobrać ilości linii richtextboxa.

-- Dodane 16.07.2012 (Pn) 16:17 --

var lines = (string[])richTextBox1.Invoke(

                           (Func)(() => this.richTextBox1.Lines));

I działa :D.

Dzięki :slight_smile: