Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memunggah Perhimpunan yang Dimuat dengan Assembly.LoadFrom() dengan Cekap?

Bagaimana untuk Memunggah Perhimpunan yang Dimuat dengan Assembly.LoadFrom() dengan Cekap?

Barbara Streisand
Barbara Streisandasal
2025-01-06 02:16:40843semak imbas

How to Efficiently Unload Assemblies Loaded with Assembly.LoadFrom()?

Memunggah Perhimpunan yang Dimuatkan dengan Perhimpunan.LoadFrom()

Untuk menentukan masa yang dibelanjakan untuk melaksanakan GetTypes() selepas memuatkan DLL, anda boleh mengikuti langkah yang dinyatakan di bawah.

Memunggah Perhimpunan

  1. Rujukan Keluaran: Tetapkan objek Perhimpunan kepada null untuk mengeluarkan sebarang rujukan eksplisit kepada DLL yang dimuatkan. Walau bagaimanapun, ini tidak menjamin pemunggahan serta-merta.
  2. Nyahmuat AppDomain: Cipta domain aplikasi berasingan (AppDomain) untuk memuatkan DLL. Setelah ukuran masa selesai, anda boleh memunggah AppDomain untuk melepaskan sumber yang dikaitkan dengan DLL. Ini memastikan pemunggahan yang bersih.

Pengumpulan Sampah

Pengumpul sampah (GC) bertanggungjawab untuk menuntut semula memori yang tidak digunakan. Semasa menetapkan objek Assembly kepada null mencetuskan GC untuk menandakan objek untuk koleksi berpotensi, ia tidak menjamin bahawa memori akan dikeluarkan serta-merta.

Contoh Menggunakan AppDomain

Kod berikut menunjukkan cara untuk muatkan perhimpunan dalam AppDomain yang berasingan dan punggahnya selepas mengukur masa untuk GetTypes():

// Define the assembly path
string pathToAssembly = @"C:\temp\myassembly.dll";

// Create a new AppDomain
AppDomain dom = AppDomain.CreateDomain("some");

// Load the assembly in the new AppDomain
AssemblyName assemblyName = new AssemblyName();
assemblyName.CodeBase = pathToAssembly;
Assembly assembly = dom.Load(assemblyName);

// Measure the time for GetTypes()
Stopwatch sw = Stopwatch.StartNew();
Type[] types = assembly.GetTypes();
sw.Stop();
double time1 = sw.Elapsed.TotalMilliseconds;

// Unload the AppDomain to release the assembly
AppDomain.Unload(dom);

Oleh memunggah AppDomain, anda memastikan bahawa sumber yang diperuntukkan kepada pemasangan yang dimuatkan dikeluarkan, memberikan ukuran masa yang lebih tepat untuk pemuatan dan operasi GetTypes() seterusnya.

Atas ialah kandungan terperinci Bagaimana untuk Memunggah Perhimpunan yang Dimuat dengan Assembly.LoadFrom() dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn