Добрый день! Ситуация следующая. Я в своем приложении открываю именованный межпроцессный EventWaitHandle, "взведенный" другим процессом, и подаю на него сигнал. Он, получив сигнал, заканчивает работу и выгружается. Хочется узнать, когда это счастливое событие произошло. Анализировать список процессов не получится, т.к. имя процесса в общем случае я не знаю. Я пробовал периодически анализировать у открытого мной EventWaitHandle, который был "взведен" другим процессом, свойства EventWaitHanlde.SafeWaitHandle.IsClosed и IsInvalid, но они почему-то после вызова EventWaitHandle.Close()
в другом процессе и даже после завершения этого процесса почему-то остаются false
Что делать?
Здравствуйте, 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);
}
}