Я хочу освободить все ресурсы, прикрепленные к процессу, а затем закрыть этот процесс.Но даже если я закрою процесс, некоторые ресурсы все еще присоединяются процессом.
Поток вызова метода: CreateDir -> StartProcess -> OtherMethod-> CloseProcess -> DeleteDir.При запуске процесса открывается окно командной строки.Когда я закрываю процесс, вызывается Dispose () компонента.Он не закрывает командную строку.Я пробовал Close () также, но результат тот же.После этого, когда я вызываю DeleteDir (), он выдает исключение, говорящее «Файл используется другим процессом».Я уверен, что никакой другой процесс, кроме того, что я начал, не использует эти файлы.Я вызвал Kill () после Dispose (), но это также выдает исключение, говорящее «к этому объекту не прикреплен процесс».Здесь я не / не могу использовать «используя блок».
Class ABC{
Process proc;
string dir;
void CreateDir(string dirName){
Directory.CreateDirectory(dirName);
dir = dirName;
}
void StartProcess(){
proc.FileName = "SomeProcess.exe";
proc.Arguments = "some args";
proc.WorkingDirectory = dir;
proc.Start();
}
void CloseProcess(){
if(proc != null && !proc.HasExited){
proc.Dispose(); // calling Component's Dispose()
//proc.Close();
//proc.Kill();
}
}
void DeleteDir(){
Directory.Delete(dir);
}
void OtherMethod(){
//do something else
}
}
Поэтому я хочу сделать три вещи: 1) Безопасно освободить все ресурсы.2) Закройте процесс.3) Удалить созданный каталог.
Любая помощь приветствуется.
Заранее спасибо.