Вы должны сосредоточиться на очистке ресурса и постепенном выходе из процесса, который вы начали.
Вы не можете сделать это удаленно, так что того, что вы делаете в этом приложении планировщика, достаточно, чтобы отправить сообщение запущенный процесс, чтобы остановить его.
Запущенный процесс должен обработать все остальное. (Изящный выход)
Когда вы остановите процесс, все управляемые (а также неуправляемые) ресурсы, которые он использовал, будут освобождены независимо от того, * вы Dispose()
их или нет.
Не будет утечка памяти из-за того, что ваша операционная система освобождает полный рабочий набор.
Следует учитывать, есть ли текущие фоновые процессы (запущенные вами потоки, которые не помечены как IsBackground = true, будут продолжать работать и предотвращать приложение закрыто), Задачи , которые вы запустили, и вы должны реализовать изящный выход для любых внешних подключений и т. д. c. для них.
Если одна из задач в этот момент - запись в файл, файл будет частично записан. Если в этот момент поток выполняет какой-либо сетевой ввод-вывод, он будет прерван. Он будет отключен от удаленного конца преждевременно. Вам не нужно беспокоиться о памяти и обрабатывать утечки, но следует рассмотреть возможность постепенного прекращения таких процессов (файловый ввод-вывод, сетевой ввод-вывод и т. Д. c.)
Ваши финализаторы будут быть вызванным во время прекращения. Это хорошее место для выполнения очистки.
Также см. Здесь для как использовать токен отмены , чтобы остановить задачу, когда она будет отменена.
Надеюсь, это поможет.