【发布时间】:2015-04-11 03:04:22
【问题描述】:
我需要使用自动重置事件和手动重置事件等命名事件将信号从 Windows 服务发送到 Windows 控制台/窗体应用程序。我了解 AutoResetEvents 和 ManualResetEvents 主要用于线程同步,但现在我需要使用命名事件来向 Windows 窗体应用程序发出信号。我的 EventWaitHandler 并编写了可以执行此操作的代码,因为我的 Windows 服务在 SetSignalToClient 方法调用时崩溃
在事件查看器中,我发现异常为: 异常信息:System.Threading.WaitHandleCannotBeOpenedException
Windows 服务代码:
public void SetSignalToClient()
{
System.Threading.EventWaitHandle wh = EventWaitHandle.OpenExisting("MyEventName", EventWaitHandleRights.Modify);
wh.Set();
}
Windows 窗体应用程序:
public void ReceiveSignalFromClient()
{
textBox1.Text = "Successful";
while (true)
{
EventWaitHandle wh = new EventWaitHandle(false, EventResetMode.AutoReset, "MyEventName");
wh.WaitOne();
textBox1.Text = "Failed";
}
}
提前谢谢...
【问题讨论】: