我有調用與InvokeMember()
像這樣我的DLL的應用程序:C#殺死所有的線程
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;
}
}
我的DLL,然後創建一個新的線程,並開始處理。在我的DLL,我在創建新的線程是這樣的:
Thread thread = new Thread(
delegate(){
while(true)
{
GetFilesInFolder();
Thread.Sleep(120000);
}
});
ne.Start();
的目標是定期檢查該文件夾。問題是,當我關閉調用我的DLL的應用程序時,進程未關閉。有沒有辦法關閉所有的線程?
注意:我無法修改應用程序,我只能修改我的DLL。
我也嘗試使用計時器,但我不能讓Threading.Timer工作落實安全取消。 – hs2d 2012-01-03 11:42:02
還有Timers.Timer – 2012-01-03 11:44:23
是的,我知道這一切。也許你可以給我一個工作示例如何在我的情況下使用Timer? – hs2d 2012-01-03 11:54:19