मैं असेंबली लोड करने के लिए ऐपडोमेन का उपयोग कर रहा हूं और फिर उन्हें अनलोड कर रहा हूं।AppDomain अनलोड के बाद असेंबली असंबद्ध नहीं है?
हालांकि, मुझे बहुत ही कठिन समस्या है। AppDomain अनलोड होने के बाद - मैं अभी भी प्रक्रिया एक्सप्लोरर में देख सकता हूं कि कुछ असेंबली कई बार लोड की जाती हैं! लोड किए गए असेंबली के रहने वाले क्यों हैं? AppDomain नहीं है। अपलोड करें सभी AppDomain की लोड की गई स्मृति को मुक्त करता है?
आप संलग्न चित्र में दिखाई दे सकते हैं:
कुल AppDomains हैं 3
AppDomains (मैं इस प्रक्रिया के जीवन चक्र में 3 AppDomains बनाया): 1 (वर्तमान में केवल 1 AppDomain मौजूद है)
और किसी कारण से, आप लोड DLL अनुभाग bellow में देख सकते हैं - विधानसभाओं प्रक्रिया में कई बार लोड किए गए हैं ..
कोड:
AppDomain fetcherDomain = AppDomain.CreateDomain("StatusFetcher");
try
{
var fetcher = (LocalStatusFetcher)fetcherDomain.CreateInstanceFromAndUnwrap(Assembly.GetExecutingAssembly().CodeBase, typeof(LocalStatusFetcher).FullName);
//doing some other stuff that is not interesting...
}
finally
{
AppDomain.Unload(fetcherDomain);
}
और हाँ, LocalStatusFetcher MarshalByRefObject वारिस है ...
शायद आप अपने मुख्य ऐपडोमेन में असेंबली लोड कर रहे हैं। वैसे, छवि संकल्प बहुत कम है और मैं कुछ भी नहीं देख सकता। –
मैंने इसके बारे में सोचा, लेकिन यह मामला नहीं है (डीबगर के साथ चेक किया गया) - साथ ही, असेंबली केवल एक से अधिक बार दिखाई देते हैं जब वे एकाधिक ऐपडोमेन में लोड होते हैं। तस्वीर की गुणवत्ता के बारे में - यह स्टैक ओवरफ्लो है जो करता है, अगर आप छवि के यूआरएल लेते हैं और इसे किसी अन्य टैब में पेस्ट करते हैं तो आप इसे ठीक देख पाएंगे। –
आपके स्क्रीन-शॉट से दिखाई देने वाली असेंबली सभी .NET Framework असेंबली हैं। क्या यह आपके असेंबली के साथ भी होता है? –