Frage

Ich habe einen gemischten Modus ausführbar und ich bemerkte, dass der Konstruktor meiner Heimat globalen Variablen im Hauptthread aufgerufen wird, aber der destructor ist in einem anderen Thread aufgerufen.
Der Name des Gewindes ist 'Thema :: intermediateThreadProc'.

Was ist der Grund dafür? Und was ist das 'Thema :: intermediateThreadProc' thread?

Danke.

War es hilfreich?

Lösung

Thread :: intermediateThreadProc () ist eine kleine Hilfsfunktion in der CLR, die als Thread-Start-Funktion für einen beliebigen Thread von der CLR gestartet verwendet wird. Finden Sie es in der SSCLI20 Quelle zurück, src \ vm \ threads.cpp

Bei diesem Anblick läuft auf einem anderen Thread ist zu erwarten. Cleanup Code ausgeführt wird, wenn der Appdomain entladen wird. Die CLR-Logik für sie ist mächtig kompliziert, aber es sieht aus wie es laufen wird, wenn der Appdomain die Finalizerthread zum letzten Mal läuft den Haufen zu bereinigen. Sie können davon ausgehen, dass alle verwalteten Objekte sind tot und es gibt keine anderen laufenden Threads. Hüten Sie sich vor, dass Ihr Code unterliegt den beiden zweiten Finalizerthread Timeout.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top