Помогите C# backgroundworker

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by hermein, 19 Apr 2011.

  1. hermein

    hermein New Member

    Joined:
    26 Feb 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    В общем имеется пост запрос:
    private string post(string URL,string Post)
    {
    String secondStepForm = Post;
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
    request.UserAgent = "Opera/9.80";
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    byte[] EncodedPostParams = Encoding.ASCII.GetBytes(secondStepForm);
    request.ContentLength = EncodedPostParams.Length;
    request.GetRequestStream().Write(EncodedPostParams, 0, EncodedPostParams.Length);
    request.GetRequestStream().Close();
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    string html = new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();

    }

    Имеется компонент backgroundworker1
    Как вставить процедуру post в Do_Work Воркера, чтобы каждый post - запрос выполнялся параллельно???
    Я пробовал - но пишет что вызов осуществляется не из того потока в котором он создан
     
  2. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    Класс BackgroundWorker позволяет выполнить операцию в отдельном, выделенном потоке.

    BackgroundWorker
     
  3. hermein

    hermein New Member

    Joined:
    26 Feb 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Я в курсе и я задал конкретный вопрос как в дуворк добавить процудурку пост запроса?
     
  4. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    Покажи, как ты это сделал.
     
  5. hermein

    hermein New Member

    Joined:
    26 Feb 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
    this.post(url, pack);
    }

    Мне надо чтобы отправка пост-запросов шла всегда в отдельном потоке
     
  6. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Из метода DoWorkEventHandler нельзя обращаться к элементам формы напрямую, для этого необходимо использовать Invoke, BeginInvoke. Если нужно просто посылать запросы то можно воспользоваться ThreadPool(или Thread), что то типа такого тут кто-то писал:
     
    #6 seosimf, 19 Apr 2011
    Last edited: 19 Apr 2011
  7. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43

    DoWorkEventHandler - метод?????

    ReportProgress, в нем можно обращаться к контролам формы.

    =\
     
  8. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Ну в методе подписчике, сути дела не меняет.
     
  9. hermein

    hermein New Member

    Joined:
    26 Feb 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    А конкретно кто-нибудь может ответить?
     
  10. hermein

    hermein New Member

    Joined:
    26 Feb 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Тема не актуальна, разобрался