Guten Tag,
ich versuche meinen Fehler so gut wie möglich zu beschreiben, jedoch kann ich nicht versichern, dass ich es direkt beim ersten mal hin bekomme: Ich habe eine Anwendung, welche für mich viele Informationen von einer Webseite überprüfen soll und das über 50 laufende Threads (die Informationen müssen sehr schnell verarbeitet werden). Die Webseite gehört mir und ist extra für diesen Verwendungszweck programmiert worden.
Das Problem ist nun, dass ich sehr viele Fehler erhalte, welche wie folgt aussehen:
Eigentlich würde ich diese Fehler einfach ignorieren, jedoch wird bei jedem Fehler eine Anfrage, die ich benötige, übersprungen. Ich habe mir bereits mehrere Lösungen im Internet angeschaut, jedoch scheint keine zu funktionieren.
Gehen wir mal zum Verlauf meines Programmes: Ich habe einen Button, welcher einen BackgroundWorker startet. Dieser BGW beinhaltet folgenden Code:
Laut dem Internet, scheint die Dispose Funktion das Problem zu sein, weil ein Thread bei 50 erlaubten Connections dennoch versucht, einen 51. Thread zu starten (wenn ich das richtig verstanden habe).
Jedoch zeigt mit die Fehlermeldung an, dass mein Fehler in Zeile 101 liegt, welche folgenden Code beinhaltet:
Den kompletten Code kann ich leider nicht zur Verfügung stellen, ich habe dafür nicht die ausreichende Berechtigung erhalten. Ich hoffe jedoch, dass es reicht und falls nicht, versuche ich einen akkuraten Pseudocode zu posten, wozu ich grade leider keine Zeit habe.
Ich mag diese Methode an Threads übrigens überhaupt nicht. Jemand eine Idee, wie ich 50 Threads gleichzeitig laufen lassen kann? Simpler?
ich versuche meinen Fehler so gut wie möglich zu beschreiben, jedoch kann ich nicht versichern, dass ich es direkt beim ersten mal hin bekomme: Ich habe eine Anwendung, welche für mich viele Informationen von einer Webseite überprüfen soll und das über 50 laufende Threads (die Informationen müssen sehr schnell verarbeitet werden). Die Webseite gehört mir und ist extra für diesen Verwendungszweck programmiert worden.
Das Problem ist nun, dass ich sehr viele Fehler erhalte, welche wie folgt aussehen:
Eigentlich würde ich diese Fehler einfach ignorieren, jedoch wird bei jedem Fehler eine Anfrage, die ich benötige, übersprungen. Ich habe mir bereits mehrere Lösungen im Internet angeschaut, jedoch scheint keine zu funktionieren.
Gehen wir mal zum Verlauf meines Programmes: Ich habe einen Button, welcher einen BackgroundWorker startet. Dieser BGW beinhaltet folgenden Code:
C#-Quellcode
- int threadcount = 50; //Wenn ich die Threads auf 1 beschränke, funktioniert alles wunderbar!
- ThreadPool.SetMinThreads(threadcount, threadcount);
- ThreadPool.SetMaxThreads(threadcount, threadcount);
- ServicePointManager.DefaultConnectionLimit = threadcount;
- ServicePointManager.Expect100Continue = false;
- try
- {
- List<string>.Enumerator enumerator = informations.GetEnumerator();
- while (enumerator.MoveNext())
- {
- string current = enumerator.Current;
- ThreadPool.QueueUserWorkItem(information =>
- {
- CheckInformation(informations.ToString());
- }, current);
- }
- }
- finally
- {
- List<string>.Enumerator enumerator = new List<string>.Enumerator();
- enumerator.Dispose();
- }
Laut dem Internet, scheint die Dispose Funktion das Problem zu sein, weil ein Thread bei 50 erlaubten Connections dennoch versucht, einen 51. Thread zu starten (wenn ich das richtig verstanden habe).
Jedoch zeigt mit die Fehlermeldung an, dass mein Fehler in Zeile 101 liegt, welche folgenden Code beinhaltet:
Den kompletten Code kann ich leider nicht zur Verfügung stellen, ich habe dafür nicht die ausreichende Berechtigung erhalten. Ich hoffe jedoch, dass es reicht und falls nicht, versuche ich einen akkuraten Pseudocode zu posten, wozu ich grade leider keine Zeit habe.
Ich mag diese Methode an Threads übrigens überhaupt nicht. Jemand eine Idee, wie ich 50 Threads gleichzeitig laufen lassen kann? Simpler?
Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sekki“ ()