Узнать о выгрузке приложения через SafeWaitHandle
От: Pablo Cabaneiro  
Дата: 27.11.06 10:52
Оценка:
Добрый день! Ситуация следующая. Я в своем приложении открываю именованный межпроцессный EventWaitHandle, "взведенный" другим процессом, и подаю на него сигнал. Он, получив сигнал, заканчивает работу и выгружается. Хочется узнать, когда это счастливое событие произошло. Анализировать список процессов не получится, т.к. имя процесса в общем случае я не знаю. Я пробовал периодически анализировать у открытого мной EventWaitHandle, который был "взведен" другим процессом, свойства EventWaitHanlde.SafeWaitHandle.IsClosed и IsInvalid, но они почему-то после вызова EventWaitHandle.Close() в другом процессе и даже после завершения этого процесса почему-то остаются false Что делать?
Re: Узнать о выгрузке приложения через SafeWaitHandle
От: desco США http://v2matveev.blogspot.com
Дата: 27.11.06 11:12
Оценка:
Здравствуйте, Pablo Cabaneiro, Вы писали:
упрощенный рабочий пример


// app 1
    class Program
    {
        static void Main(string[] args)
        {
            EventWaitHandle waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset, "EventWaitHandle");
            Console.ReadKey(false);
            waitHandle.Set();
        }
    }

// app 2
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                EventWaitHandle waitHandle = EventWaitHandle.OpenExisting("EventWaitHandle");
                Console.WriteLine("Waiting");
                waitHandle.WaitOne();
                Console.WriteLine("Wait completed");
                
            }
            catch(WaitHandleCannotBeOpenedException e)
            {
                Console.WriteLine("EventWaitHandle not found");
                Console.WriteLine(e.Message);
            }
            Console.ReadKey(false);
        }
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.