在写这个问题时:AppDomain, handling the exceptions我也想到了一个不同的问题。AppDomain,运行程序集.exe或.dll?
如果你想写一个像我上面写的插件应用程序。你会去编写插件作为可执行文件或库?
对于通过AppDomain.ExecuteAssembly(String)
方法运行的动态加载的可执行文件,您将拥有多少控制权?而不是使用AppDomain.CreateInstanceAndUnwrap(String, String)
创建对象的实例。
我现在有一个接口,其特点是在CreateInstanceAndUnwrap
之后调用的启动/运行+停止+初始化方法。你对执行的程序集版本有相同的控制类型吗?如果我使用后者,我如何实现这种功能来动态地停止该插件?
或者我在完全错误的方向思考?
[编辑后的问题]
Basicly我们得到了 '一个' 应用程序,以及多种功能。
- 刻录(视频)DVD)
- 打印照片的
- 下载从照片/视频摄像机图像
- 一个POS
- 存储服务器,充当备份/ configsettings /图片+视频 知识库
- 在多台显示器上显示上述照片/视频
- 等等,但这些是主要的“功能”
计算机可以运行多个任务/插件。例如,我们可以选择让一台电脑处理整个图像下载/显示/打印系统。或者有一台具有多个下载/显示系统的集中式打印机。
一切都是通信的插座
如果重新启动,不管什么原因,它需要一个插件崩溃和邮件要发送到办公室。如果同一次崩溃在短时间内多次发生,那么它应该发送某种紧急电子邮件并关闭该插件并通知操作员。
其中一些函数使用第三方非托管代码,一些使用C++/Native编写,一些使用C++编写,其他一些使用C#编写,所有这些都将在不同项目的相同解决方案中编写。
edit2 还有这个额外的功能,我们想添加到系统中。只要该插件的更新版本可用,就会自动更新插件。父AppDomain /线程应定期检查更新,如果发现更新,应该卸载该插件,下载新版本并重新启动。由于这个特定的原因,我认为我们需要使用AppDomain的
IIRC .NET EXE文件是一个带有引导程序(C++)和清单的.NET DLL,它告诉引导程序入口点的位置,其中包括“使用管理员权限运行我” – Aren
这完全取决于什么这个'插件'需要做。要多照顾一下我们? –
我在您的请求中添加了额外的信息,@ csharptest.net –