Процесс. Вышедший не всегда увольнение

Если я выполняю следующий код:

Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "notepad.exe";
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new System.EventHandler(Process_OnExit);
myProcess.Start();

public static void Process_OnExit(object sender, EventArgs e)
{
    // Delete the file on exit
}

Событие генерируется, когда я выхожу из блокнота. Если я пробую тот же код, но я запускаю изображение вместо этого:

Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = @"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg";
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new System.EventHandler(Process_OnExit);
myProcess.Start();

public static void Process_OnExit(object sender, EventArgs e)
{
    // Delete the file on exit
}

Событие никогда не запускается. Это, потому что процесс, который загружает изображение, никогда не закрывается?

ОБНОВЛЕНИЕ: процессом для запуска является не всегда Изображение. Это может быть что-либо (PDF, документ слова, и т.д.). Возможно, мой подход не является правильным. Там какой-либо другой путь состоит в том, чтобы удалить файл после того, как пользователь вышел из процесса?

Спасибо

11
задан Alexandre Pepin 29 January 2010 в 15:03
поделиться

2 ответа

Вы используете изображение Viewer изображений по умолчанию в Windows, поскольку файл изображения не исполняется. Я изменил код, чтобы использовать XP по умолчанию, и он работал нормально.

class Program
{
    static void Main(string[] args)
    {
        Process myProcess = new System.Diagnostics.Process(); 
        myProcess.StartInfo.FileName = @"rundll32.exe"; 
        myProcess.EnableRaisingEvents = true;
        myProcess.StartInfo.Arguments = @"C:\winnt\System32\shimgvw.dll,ImageView_Fullscreen c:\leaf.jpg";
        myProcess.Exited += new System.EventHandler(Process_OnExit); 
        myProcess.Start();
        Console.Read();



    }
    public static void Process_OnExit(object sender, EventArgs e)
    {
        Console.WriteLine("called");
        Console.Read();
    } 


}
1
ответ дан 3 December 2019 в 03:35
поделиться

Событие срабатывает для меня с помощью Viewer Microsoft Photo Viewer в качестве зрителя. Возможно, вы используете зритель, который на самом деле не закрывается?

0
ответ дан 3 December 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: