.NET 4.x Многопоточная отправка запросов - C#
Формулировка задачи:
Народ подскажите как реализовать многопоточную отправку запросов)
Вот код
все равно медленно...(((
Листинг программы
- 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.Net;
- using System.IO;
- using System.Threading;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- Thread[] threads = new Thread[10];
- for (int i = 0; i < 10; i++)
- {
- Thread t = new Thread(new ThreadStart(DoTransactions));
- threads[i] = t;
- }
- for (int i = 0; i < 10; i++)
- {
- threads[i].Start();
- }
- }
- string strNewValue;
- string strResponse;
- int zzz = 0;
- public void DoTransactions()
- {
- string[] ID = "".Split();
- richTextBox1.Invoke(new EventHandler(delegate { ID = richTextBox1.Text.Split('\n'); }));
- string[] Auth_ID;
- string ids = "555";
- lock (this)
- {
- for (int i = 0; i < ID.Length; i++)
- {
- Auth_ID = ID[i].Split(':');
- HttpWebRequest req = (HttpWebRequest)WebRequest.Create("........");
- req.Proxy = new WebProxy("127.0.0.1", 8888);
- // Set values for the request back
- req.Method = "POST";
- req.ContentType = "application/x-www-form-urlencoded";
- strNewValue = "...."+Auth_ID[0]+"....."+Auth_ID[1];
- req.ContentLength = strNewValue.Length;
- // Write the request
- StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
- stOut.Write(strNewValue);
- stOut.Close();
- // Do the request to get the response
- StreamReader stIn = new StreamReader(req.GetResponse().GetResponseStream());
- strResponse = stIn.ReadToEnd();
- stIn.Close();
- }
- }
- }
- }
- }
Решение задачи: «.NET 4.x Многопоточная отправка запросов»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Runtime.Remoting.Messaging;
- using System.Text;
- using System.Threading;
- namespace ConsoleApplicationTest {
- static class Program {
- static void Main( string[] args ) {
- var urls = new[] {
- "http://wikipedia.org",
- "http://msdn.microsoft.com",
- "http://www.cyberforum.ru"
- };
- // Состояния асинхронных операций.
- var asyncResults = new List<IAsyncResult>();
- foreach ( string uri in urls ) {
- HttpWebRequest req = (HttpWebRequest)WebRequest.Create( uri );
- var asyncResult = req.BeginGetResponse( null, req );
- Console.WriteLine( "Запрос отправлен на " + uri );
- asyncResults.Add( asyncResult );
- }
- // Ждём завершения всех запросов.
- WaitHandle.WaitAll( asyncResults.Select(result => result.AsyncWaitHandle).ToArray() );
- // Получаем ответы
- var responses = new List<string>();
- foreach ( IAsyncResult asyncResult in asyncResults ) {
- HttpWebRequest request = (HttpWebRequest) asyncResult.AsyncState;
- using ( var response = request.EndGetResponse( asyncResult ) ) {
- using ( var reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII ) ) {
- responses.Add( reader.ReadToEnd() );
- }
- }
- asyncResult.AsyncWaitHandle.Close();
- Console.WriteLine( "Ответ получен от "+ request.RequestUri );
- }
- foreach ( string response in responses ) {
- Console.WriteLine( response );
- }
- Console.ReadKey();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д