[Вопрос] NET c#

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by KAAAAAARL, 11 Aug 2011.

  1. KAAAAAARL

    KAAAAAARL New Member

    Joined:
    31 May 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Всем дорого времени суток :p
    Есть метод -
    Code:
    HttpWebRequest zapros = (HttpWebRequest)HttpWebRequest.Create(ссылка + toparse);
                        zapros.UserAgent = "Opera/9.80";
                        zapros.Method = "POST";
                        zapros.KeepAlive = false;
                        zapros.GetRequestStream().Close();
    
    Есть потоки -
    Code:
    public int noo;
    //------------------------------
    noo = int.Parse(textBox1.text);
    Thread[] pp = new Thread[noo];
                    
                    for (int i = 0; i < noo; i++)
                    {
                        
                        pp[i] = new Thread(new ThreadStart(Метод));
                        pp[i].Start();
                    }
    
    Вопрос - как сделать так что бы для каждого запущенного потока переменная toparse имела разные значения.
    То есть запретить потоку обращаться к данным другого потока
    Спасибо :p
     
  2. n0_lim1t

    n0_lim1t New Member

    Joined:
    25 Apr 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Читаем там, где про лок - http://forum.antichat.ru/showthread.php?t=169454
     
  3. KAAAAAARL

    KAAAAAARL New Member

    Joined:
    31 May 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Тогда же теряется смысл многопоточности
     
  4. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    ну тут можно создать массив:
    Code:
    public int noo;
    public int i=0;// объявим i как глобальную переменную
    //------------------------------
    noo = int.Parse(textBox1.text);
    string[] toparse= new string[noo];// создадим массив размером с количество потоков
    
    Thread[] pp = new Thread[noo];
                    
                    for (i = 0; i < noo; i++)
                    {
                        
                        pp[i] = new Thread(new ThreadStart(Метод));
                        pp[i].Start();
                    }
    
    
    .......
    
    //передаем в поток элемент под текущим значением счетчика
    HttpWebRequest zapros = (HttpWebRequest)HttpWebRequest.Create(ссылка + toparse[i]);
                        zapros.UserAgent = "Opera/9.80";
                        zapros.Method = "POST";
                        zapros.KeepAlive = false;
                        zapros.GetRequestStream().Close();
    
    
     
  5. KAAAAAARL

    KAAAAAARL New Member

    Joined:
    31 May 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Code:
    HttpWebRequest zapros = (HttpWebRequest)HttpWebRequest.Create(ссылка + [COLOR=DarkRed]toparse[i][/COLOR]);
                        zapros.UserAgent = "Opera/9.80";
                        zapros.Method = "POST";
                        zapros.KeepAlive = false;
                        zapros.GetRequestStream().Close();
    
    Индекс находился вне границ массива