Cross-thread operation not va­lid
<p>I have some task. I need to sort a list of urls. I need to select a certain amount of urls with same domain.
For example:</p>

<pre><code>http://yandex.ru/number1
http://yandex.ru/number2
http://yandex.ru/number3
http://yandex.ru/number4
http://yandex.ru/number5
http://yandex.ru/number6
http://yandex.ru/number7
http://yandex.ru/number8
http://yandex.ru/number9
http://google.ru/number1
http://google.ru/number2
http://google.ru/number3
http://google.ru/number4
http://google.ru/number5
http://google.ru/number6
http://google.ru/number7
http://google.ru/number8
http://google.ru/number9
http://google.ru/number10
</code></pre>

<p>Limit of same domains is 3:</p>

<p>So I need to get:</p>

<pre><code>http://yandex.ru/number1
http://yandex.ru/number2
http://yandex.ru/number3
http://google.ru/number1
http://google.ru/number2
http://google.ru/number3
</code></pre>

<p>I write some code:
<img src="http://i.stack.imgur.com/7BN3v.png" alt="Screen"></p>

<pre><code>using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Text.RegularExpressions;

namespace Link_separator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Thread[] thr;
        static object locker = new object();
        string temp_url;
        private void button1_Click(object sender, EventArgs e)
        {
            decimal value = 1;
            int i = 0;
            int j = (int)(value);
            thr = new Thread[j];
            for (; i &lt; j; i++)
            {
                thr[i] = new Thread(new ThreadStart(go));
                thr[i].IsBackground = true;
                thr[i].Start();
            }
        }

        public void go()
        {
            while (true)
            {
                int counter = 0;
                foreach (string url in richTextBox1.Lines)
                {
                    string domain = Regex.Match(url, @"(http://.+?)\/.+").Groups[1].Value;
                    if (counter &lt;= int.Parse(textBox1.Text) &amp;&amp; domain == temp_url)
                        counter = 0;
                    temp_url = domain;
                    counter++;
                    richTextBox2.Text += url + "\r\n";
                }
            }
        }
    }
}
</code></pre>

<p>But I get an exception: Cross-thread operation not valid: Control 'richTextBox1' accessed from a thread other than the thread it was created on.</p>

<p>Can u help me to solve my problem?</p>
