在寫這個問題時: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 –