基本上我需要的是能够将新功能添加到我的应用程序,而无需更新应用程序本身。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