基本上我需要的是能夠將新功能添加到我的應用程序,而無需更新應用程序本身。C#製作應用程序支持插件,運行多個實例,可能嗎?
可以說我有兩個插件的應用程序。
應用程序有一個函數叫做generateNumber();
Plugin_1將有以下代碼:
void init(){ }
int exec(){
int number = HOST_APPLICATION.generateNumber();
number = number * 2;
return number;
}
Plugin_2將具有相同的結構,只有不同的功能:
void init(){ }
int exec(){
int number = HOST_APPLICATION.generateNumber();
number = (number * 10) + 13;
return number;
}
我需要每個 '插件' 的多個實例同時運行(每個都在它自己的線程中),所以總共有20個線程同時運行。該代碼將是這樣的:
主要用途:
void init_plugins() { }
void execute_plugins(){
for(int i=0; i<plugins.count; i++){
for(int z=0; z<10; z++){
Thread t = new Thread(plugin_research);
t.start(plugins[i]);
}
}
}
void plugin_research(PluginStructure Plugin){
Plugin.init();
int return_val = Plugin.exec();
// do something with return_val
}
我還需要託管應用程序調用插件的功能(該結構將所有插件一樣)和插件能夠調用主機應用程序的功能。
每個插件都有不同的配置控件。我需要在一個地方顯示配置,但同時多次調用插件功能(使用線程)
這可能嗎?什麼是實現這一目標的最佳方式?我可以用iPlugin做這個嗎?
謝謝Marco!你能告訴我什麼時候我在C#中開始新項目,我應該選擇什麼,Win Application for plugin?我也需要Gui來進行配置。每個插件都有自己的配置。 – user1015551
@ user1015551:對於每個插件,您可以選擇Windown Form;然後在項目屬性轉到應用程序選項卡,並選擇「類庫」作爲輸出類型 – Marco
@ user1015551:正如你可以從我的代碼看到的,不要從插件調用'HOST_APPLICATION.generateNumber();',但傳遞一個新的生成號碼每個插件與它的構造函數。這樣你從你的應用程序拆分插件..否則這是有單獨的插件的原因? – Marco