我有一个应用程序调用我的DLL,InvokeMember()
如下所示:
Assembly OCA = Assembly.LoadFrom("./Modules/ProcessFiles.dll");
Type[] types = OCA.GetTypes();
foreach (var type in types)
{
//MethodInfo[] methods = type.GetMethods();
if (type.Name == "Converter")
{
var tmpType = type;
var obj = Activator.CreateInstance(tmpType);
Thread t = new Thread(
() =>
tmpType.InvokeMember("Run", BindingFlags.Default | BindingFlags.InvokeMethod, null, obj,
null));
t.Start();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我的DLL然后创建一个新线程并开始处理.在我的DLL中,我创建了这样的新线程:
Thread thread = new Thread(
delegate(){
while(true)
{
GetFilesInFolder();
Thread.Sleep(120000);
}
});
ne.Start();
Run Code Online (Sandbox Code Playgroud)
目标是定期检查文件夹.问题是,当我关闭调用我的DLL的应用程序时,该进程未关闭.有没有办法关闭所有线程?
注意:我无法修改应用程序,我只能修改我的DLL.