主程序
Sub Main()
...反射...
Dim Myassembly As Assembly = Assembly.LoadFrom(DllPath)
CType(Myassembly.CreateInstance("Message.Base"), 某一类别).Show
End Sub外部的Dll文件
Sub Show()
Dim AA as 某窗体
AA.Show
End Sub'==============================================
主窗体的Sub Main结束后,反射出来的窗体,没有随着Sub的结束而结束。问题一:这样子,我如何去控制它,并结束该窗体呢?如何释放该反射出来的程序所占有的资源呢??(主窗体和外部DLL控制都可以)问题二:反射出来的DLL窗体,和主框架是多线程的关系么?是不是关闭了所有的窗体它就自动释放了呢?

解决方案 »

  1.   

    就算Dispose也没有用的,该窗体依旧存在的。
      

  2.   

    如要这个控件可以被用户关闭,那么可以等侍用户的关闭,比如这是一个窗体,可以由用户来关闭这个窗体.如果这只是一个Control,那么你可以把它加到一个Controls集合中,通过对Controls的操作来释放控件.如果确实要释放Assembly的资源,那么好像是要通过AppMain的UnLoad来释放了.
      

  3.   

    是AppDomain 类的方法:
    AppDomain.Unload 方法
      

  4.   

    这是一个外部的Dll,在这个Dll的一个方法里面,启动了一个窗体。AppDomain.Unload——似乎不能去掉反射的资源。
      

  5.   

    应该是没加控制吧.估计就像开多一个线程,主线程关闭,但另一张程打开的窗口并不会因主窗口关闭而关闭.我觉得可以这样将FORM做成在DLL中的全局,之后加多一个Close的方法让主线程调用.