Új hozzászólás Aktív témák

  • NoMan

    csendes tag

    Kedves Fórumozók!

    A következő problémával fordulnék hozzátok. Már 1 napja a google-t bújom, de igazi megoldást még nem találtam a következő problémára: Adott egy DLL fájl, benne egy formmal.

    Ebből a DLL-ből kellene betölteni a Formot (erre már találtam több megoldást is), viszont van egy kis csavar a dologban (erre nem találtam megoldást). A példányosítás előtt ellenőrizni kéne, hogy futás közben változott-e a DLL és ha igen, akkor újra kéne tölteni a DLL-t és úgy példányosítani.

    Ez azért lenne fontos, mert a főprogramból egy példány fut és az nem zárható be / nem indítható újra. Viszont a DLL-ben megvalósítottt formon időnként változtatnom kell. Melyet úgy szeretnék megoldani, hogy kicserélem a főprogram alatt a DLL fájlokat és amikor újra azt a Formot szeretné a főprogi betölteni, akkor már az új, megváltoztatott változat töltődik be.

    Ezzel a módszerrel próbálkoztam:

    Assembly assembly = Assembly.LoadFile(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "dashboardBasic.dll");
    Type type = assembly.GetType("dashboardBasic.FormDashboardBasic");
    Form form = (Form)Activator.CreateInstance(type);
    form.MdiParent = this;
    form.Show();

    Ez betöltötte a DLL-t és az alapján meg is jelenítette az űrlapot, de ha kicseréltem a DLL-t, akkor a régi űrlapot nyitotta meg, egészen addig, amíg a főprogit újra nem indítottam.

    Egy másik megoldás, de ez szintén ugyan ezen ok miatt zsákutca volt:

    AppDomain TestDomain = AppDomain.CreateDomain("dashboardBasic");
    Assembly testDLL = TestDomain.Load(AssemblyName.GetAssemblyName(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "dashboardBasic.dll"));
    Type type = testDLL.GetType("dashboardBasic.FormDashboardBasic");
    Form form = (Form)Activator.CreateInstance(type);
    form.MdiParent = this;
    form.Show();
    AppDomain.Unload(TestDomain);

    Valakinek valami jó ötlete a probléma megoldására?
    Előre is köszönöm az építő jellegű hozzászólásokat.

Új hozzászólás Aktív témák