C # Убить все потоки

У меня есть приложение, которое вызывает мою 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;
    }

}

Моя DLL затем создает новый поток и начинает обработку. В своей DLL я создаю новую ветку следующим образом:

Thread thread = new Thread(
    delegate(){
        while(true)
        {
            GetFilesInFolder();
            Thread.Sleep(120000);
        }
    });
ne.Start();

Цель состоит в том, чтобы периодически проверять папку. Проблема в том, что когда я закрываю приложение, которое вызывает мою DLL, процесс не закрывается. Есть ли способ закрыть все потоки?

NB: Я не могу изменять приложение, я могу только изменять свою DLL.

6
задан Abbas 3 January 2012 в 12:09
поделиться