PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : .NET: Herausfinden, welches Objekt auf welchem Thread liegt?


Kennung Eins
2006-10-25, 13:21:20
Gibt es eine Funktionalität (Diagramm, Textliste, ...) mit der ich sehen kann, welche Objekte auf welchem Thread liegen?

Ich hab grad ein Berg alten Code bekommen und soll mich da reinarbeiten .. aber so ganz blicke ich es noch nicht, da viele Threads verwendet werden. Jetzt erschließt sich mir die Threadstruktur der gesamten Anwendung noch nicht voll, daher die Frage, ob man das irgendwie ausgeben lassen kann ...

Demirug
2006-10-25, 14:10:08
Objekte sind bei .Net keinem festen Thread zugeordnet.

Kennung Eins
2006-10-25, 14:13:03
Aber wenn ich zum Beispiel eine billige GUI-Anwendung schreibe, liegen doch alle Objekte im Hauptthread. Wenn ich da nun ein paar Nebenthreads eröffne, die wiederum neue Objekte anlegen und untereinander manipulieren .. gibt es dann (ausser Code-Lesen, weil sehr viel) eine Möglichkeit zu sehen, welche Objekte wo liegen?

Demirug
2006-10-25, 14:30:45
Aber wenn ich zum Beispiel eine billige GUI-Anwendung schreibe, liegen doch alle Objekte im Hauptthread. Wenn ich da nun ein paar Nebenthreads eröffne, die wiederum neue Objekte anlegen und untereinander manipulieren .. gibt es dann (ausser Code-Lesen, weil sehr viel) eine Möglichkeit zu sehen, welche Objekte wo liegen?

Die Objekte liegen innerhalb des Prozesses. Welcher Thread ein Objekt erzeugt hat oder benutzt ist für .Net irrelevant. Bei WinForms Objekten gibt es zwar die Beschränkung das man Objekte nur aus dem Thread ansprachen darf der sie auch erzeugt hat. Allerdings ist das eine Folge der Win32 API darunter. .Net selbst wäre das eigentlich egal.

Mit der Profiler API könnte man sich so was wohl basteln. Ist aber recht aufwendig und IIRC gibt es keinen Profiler der es schon könnte.

Kennung Eins
2006-10-25, 14:37:02
Ok, dann muss ich mich wohl doch durch den Code graben.

Die Objekte liegen innerhalb des Prozesses. Welcher Thread ein Objekt erzeugt hat oder benutzt ist für .Net irrelevant. Bei WinForms Objekten gibt es zwar die Beschränkung das man Objekte nur aus dem Thread ansprachen darf der sie auch erzeugt hat. Allerdings ist das eine Folge der Win32 API darunter. .Net selbst wäre das eigentlich egal.

Mit der Profiler API könnte man sich so was wohl basteln. Ist aber recht aufwendig und IIRC gibt es keinen Profiler der es schon könnte.Genau das ist grad mein Problem.