我有一个Web服务(WS)和一个控制台应用程序(CA)。
WS接受数据并插入数据库。 CA读取此数据并执行操作。同步的工作原理如下。 WS有代码:
MyProject.Web.MvcApplication.newDataServiceMessageSignal.Set()
其中newDataServiceMessageSignal在global.asax文件中声明
public static EventWaitHandle newDataServiceMessageSignal;
并在application_start上给出以下值:
protected void Application_Start()
{
..
newDataServiceMessageSignal = new EventWaitHandle(false, EventResetMode.AutoReset, "MySignalName");
..
}
在CA中,有一个始终为true的while循环和EventWaitHandle上的WaitOne
var newMessageSignal = new EventWaitHandle(false, EventResetMode.AutoReset, "MySignalName");
while(true)
{
newMessageSignal.WaitOne();
//Do Something Useful
}
我的问题是,此代码在IIS Express上运行时运行正常(在Visual Studio中调试)但在我发布和部署应用程序然后运行它时失败。即使WS设置了信号,CA也会持续等待(我假设WS将信号设置为之前的语句是数据库提交并且成功)。我无法弄明白,为什么会这样。
感谢任何帮助,谢谢。