| 

.NET C# Java Javascript Exception

2
Hallo,

Evtl. kann mir jemand von euch weiterhelfen.
Ich habe folgendes „Problem oder Frage“ und zwar:

Wenn ich folgenden Code ausführe, manchmal läuft dieser ohne grosse Probleme durch. D.h. er hat keine grosse Wartezeit. Nun kommt es vor, wenn ich in den objectTypes nur einen Wert habe, und diesen dann, in der foreach Schlaufe dem windowObjectTypeFilter hinzufüge, habe ich gesamthaft 2 Items im windowObjectTypeFilter. Nun jedoch dauert die Zuweisung des SelectedIndex ca. 4-5 Sekunden. Aber nur wenn ich folgende Code Zeile aufführe:

this.windowsObjectTypeFilter.SelectedIndex = 0;


Hier noch die gesamte Methode:
public void LoadObjectTypeList()
{
if (NativeElementObjectListInstance.NativeTestObjectCollection != null)
{
var objectTypes = (from objectType in NativeElementObjectListInstance.NativeTestObjectCollection select objectType.Role).Distinct();
this.windowsObjectTypeFilter.Items.Clear();
this.windowsObjectTypeFilter.Items.Add("All");
foreach (string objectType in objectTypes)
{
this.windowsObjectTypeFilter.Items.Add(objectType);
}
this.windowsObjectTypeFilter.SelectedIndex = 0;
}
}


Bei objectTypes handelt es sich um String Werte wie (Textfield, Button, Checkbox, usw.)
Bei windowsObjectTypeFilter handelt es sich um ein ToolStripComboBox welcher ich die Werte hinzufüge.

Weiss jemand von euch, wieso dies so lange dauert? Also ich komme nicht dahinter.

Besten Dank,
Daniele
News:
30.03.2012
CodingMan 168 5
Sind vielleicht weitere Events von windowsObjectTypeFilter gebunden, welche bei Änderung des SelectedIndex Laufzeit in Anspruch nehmen?
me 30.03.2012
Das könnte gut sein, aber kann man dies irgendwie ohne grossen Aufwand, Visual Studio feststellen?
CodingMan 30.03.2012
Im einfachsten Fall ein paar Breakpoints setzen (und subjektiv beurteilen), dann Logging oder am Ende mit einem Performance Profiler
me 30.03.2012
2 Antworten
1
Hallo,

Schau dir mal die Methoden BeginUpdate bzw. EndUpdate an.

Siehe http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripcombobox.beginupdate.aspx

Vor dem Hinzufügen der neuen Elemente (bzw. vor Clear) rufst du BeginUpdate auf, setzt den SelectedIndex auf 0 und rufst danach EndUpdate auf.
30.03.2012
mkernbach 11 2
0
Hallo,

Danke für die Tipps! Konnte den Fehler nun eingrenzen und beheben.
Das Problem war, dass durch das setzen des SelectedIndexs, ein Event ausgelöst wurde, in welchem ich zwei Methoden ausführte.
Jedoch habe ich in der zweiten Methode, nochmals die erste aus dem Event aufgerufen.

Gruss und Danke
02.04.2012
CodingMan 168 5

Stelle deine .net-Frage jetzt!