我有一个 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 将信号设置为之前的语句是数据库提交并且它成功)。我无法弄清楚,为什么它会这样。
任何帮助表示赞赏,谢谢。