Multithreading

Mhhh gute Frage.
Ich glaube das Zeitproblem liegt an dem Schreiben der Datensätze in das Datagrid.
Aber es kann wieder rum auch an der Abfrage liegen, da zuerst für den Gruppennamen, der aus der Listbox ausgewählt wurde, alle Member geholt werden (searchresultcollection) und dann für jedes searchresult (das sind logonnamen der User) eine eigene Abfrage auf Vorname Nachname und Department gestart wird.
Wenn die Gruppe also 1000 User hat kommt ich als erstes eine ergbnisliste mit 1000 logonnamen zurück und dann wird 1000 mal eine AD-Abfrage auf die oben genannten Attribute gemacht.

Es funktioniert auch alles super, nur habe ich Angst dass Leute bei der Anwendung dieses Tools denken, dass Programm habe sich aufgehängt, weil die Abfrage bei Gruppen mit mehr als 500 Usern schon mal bis zu 10 Sekunden dauert (Schätzwert). Hinzu kommt auch das es natürlich von der Netzauslastung abhängt wie schnell die Daten zurückkomen, da das Tool nicht auf dem AD-Server direkt sondern auch von Clients aus AD-Abfragen machen kann.
Deshalb soll ein kleines PopUp kommen, mit dem freundlichen Hinweis kurz zu warten ;).

Grüße
Philipp
 
Zuletzt bearbeitet:
Wenn du 1000 mal eine Abfrage auf das AD machst (kann man das nicht auf eine Abfrage zusammenfassen?), dann kannst du beim Durchlauf deiner Schleife, die du da sicherlich hast, ein Application.DoEvents() machen. Damit wird deine Form refreshed, dein Animated Gif läuft weiter und du brauchst nicht mit zusätzlichen Threads herumhantieren.

Im übrigen kannst du die einzelnen Parts auch zeitlich messen.
Code:
DateTime dtStart = DateTime.Now;
//Do AD query here
TimeSpan tsEnd = DateTime.Now - dtStart;
Console.WriteLine("Ad Query takes " + tsEnd.TotalMilliseconds().ToString() + " ms");
Und das bei allen relevanten Blöcken. Du hast ansich da ohnehin nur zwei, also eigentlich kein Aufwand und du weißt wie lange welcher Part braucht und kannst dadurch Optimierungen durchführen bzw. generell Entscheidungen treffen.
 
Nein leider kann die Abfrage nichtzusammenfassen, weil ich jeden user anhand seines logon (cn) in der AD suchen muss, um mir die Attribute zurückgeben zu lassen. Das kann ich leider immer nur für einen User machen.

Aber du hast recht, die Abfragen finden natürlich in einer Schleife statt. Ich werde das mit dem refreshen des Forms mal probieren, da hört sich auf jeden Fall nach einer Lösung an. Ich gebe heute Abend bescheid, wenn ich das ausprobiert habe.

Vielen Dank erstmal,
Philipp
 
Hallo Norbert,

Super Es funktioniert perfekt! Ich lass mir jetzt noch zusätzlich auf das PopUp schreiben, die wie vielte von wie vielen Datensätzen geschrieben wird.
Wirklich Klasse jetzt brauch ich mir ersteneinmal keine Gedanken über Threads machen.

Grüße
Philipp
 

Neue Beiträge

Zurück