Guten Tag,
ein Problem ist folgendes: Wenn ich mehrere Threads starte um eine POST Abfrage auf unsere Webseite zu machen, scheint es so als würden sich die Threads untereinander absprechen und jeweils nacheinander die Funktion ausführen. Der Grund der Threads war jedoch, dass sie diese Funktion unabhängig von den jeweils anderen Threads durcharbeiten.
Spoiler anzeigen
So sieht das nun aus (die Ausgabe erfolgt mit der ID des Threads, welche die Aufgabe erledigt hat):
Ich finde auch nicht wirklich Lösungen für das Problem im Internet. Ich habe versucht die einzelnen Instanzen die durch die Funktion entstanden sind zu Disposen, aber das tut es auch nicht.
ein Problem ist folgendes: Wenn ich mehrere Threads starte um eine POST Abfrage auf unsere Webseite zu machen, scheint es so als würden sich die Threads untereinander absprechen und jeweils nacheinander die Funktion ausführen. Der Grund der Threads war jedoch, dass sie diese Funktion unabhängig von den jeweils anderen Threads durcharbeiten.
Ich rufe eine von mir vorher auserwählte Anzahl an Threads auf, welche ein DoWork Event bekommen (jeder Thread erhält das selbe Event):
Das ist der Code, welchen die Threads solange ausführen, bis eine Liste abgearbeitet wurde:
Das ist der Code, welchen die Threads solange ausführen, bis eine Liste abgearbeitet wurde:
C#-Quellcode
- public void ThreadFunction(object sender, DoWorkEventArgs e)
- {
- int threadId = System.Threading.Thread.CurrentThread.ManagedThreadId;
- currIndex++;
- while (currIndex <= 5000)
- {
- int currThreadIndex = currIndex;
- CookieContainer logincookie = new CookieContainer();
- string postData = "&a=b&b=c&c=d&d=e";
- CookieContainer tempCookies = new CookieContainer();
- UTF8Encoding encoding = new UTF8Encoding();
- byte[] byteData = encoding.GetBytes(postData);
- HttpWebRequest postReq = (HttpWebRequest)WebRequest.Create("meineWebseite");
- postReq.Method = "POST";
- postReq.KeepAlive = true;
- postReq.CookieContainer = tempCookies;
- postReq.ContentType = "application/x-www-form-urlencoded";
- postReq.Referer = "meineWebseite";
- postReq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)";
- postReq.ContentLength = byteData.Length;
- Stream postreqstream = postReq.GetRequestStream();
- postreqstream.Write(byteData, 0, byteData.Length);
- postreqstream.Close();
- HttpWebResponse postresponse;
- postresponse = (HttpWebResponse)postReq.GetResponse();
- tempCookies.Add(postresponse.Cookies);
- logincookie = tempCookies;
- StreamReader postreqreader = new StreamReader(postresponse.GetResponseStream());
- string pageContent = postreqreader.ReadToEnd();
- Console.WriteLine(pageContent);
- currIndex++;
- }
- }
So sieht das nun aus (die Ausgabe erfolgt mit der ID des Threads, welche die Aufgabe erledigt hat):
Ich finde auch nicht wirklich Lösungen für das Problem im Internet. Ich habe versucht die einzelnen Instanzen die durch die Funktion entstanden sind zu Disposen, aber das tut es auch nicht.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CensoredAlpaca“ ()