子线程中应用程序域(AppDomain)与主线程应用程序域的问题

时间:2022-04-05 18:37:30
您好。我在学习C#的时候遇到2个问题。
我希望实现一个功能:
打开主窗体,点击主窗体菜单打开一个子窗体A1;
这个子窗体要求由动态调用 DLL 文件MyForm.dll 生成;
修改MyForm项目,重新编译生成MyForm.dll;
关闭子窗体A1,但不关闭主窗体,用新编译生成MyForm.dll更换原来的MyForm.dll;
点击主窗体菜单,打开一个子窗体A2。
这样就实现了不停机,动态修改程序。

问题1:我等想法是用多线程+APPDomain+动态调用 来实现这个功能,测试下来如果不要求窗体A1和窗体A2作为子窗体的话其他功能可以实现,但是因为窗体A1和窗体A2是在与主窗体不用的线程和APPDomain中,无法以主窗体的子窗体弹出。

问题2:以上描述的功能,有没有更好的实现方式?
不吝赐教。

7 个解决方案

#1


线程切换,invokerequired 具体看这个帮助

#2


看看

#3


该回复于2008-08-08 11:02:27被版主删除

#4


 帮顶啊,不会又是跨线程操作的问题吧

#5


感觉思路还可以啊,我弄得一个项目,整体上思路差不多。。。

#6


關注,頂起

#7


不关闭主窗体而动态生成在dll可能做不到。
即使是动态的调用了dll中的窗体,也可以做成主窗窗体的子窗体,子窗体可以是Mdi类型的子窗体,也可以是非Mdi类型的子窗体。这和Dll无关。

#1


线程切换,invokerequired 具体看这个帮助

#2


看看

#3


该回复于2008-08-08 11:02:27被版主删除

#4


 帮顶啊,不会又是跨线程操作的问题吧

#5


感觉思路还可以啊,我弄得一个项目,整体上思路差不多。。。

#6


關注,頂起

#7


不关闭主窗体而动态生成在dll可能做不到。
即使是动态的调用了dll中的窗体,也可以做成主窗窗体的子窗体,子窗体可以是Mdi类型的子窗体,也可以是非Mdi类型的子窗体。这和Dll无关。