C# 当服务停止/崩溃时,模拟不同服务中的服务状态

C# 当服务停止/崩溃时,模拟不同服务中的服务状态,c#,msmq,C#,Msmq,我有两个服务,它们托管在两个不同的服务器上 比如说,服务器A上的服务A和服务器B上的服务B。我的服务B依赖于服务A。我想实现一些功能,比如当服务B明确崩溃/停止时(由于某种原因),我想服务A模仿服务B,从而停止服务A 我可以知道如何实现此功能吗 注意:我捕获了应用程序中所有可能的异常,但由于一些数据库问题或一些未处理的异常(在验证环境中未出现),我需要将此功能放置。你说服务B依赖于服务A吗?那么,如果服务A停止工作会发生什么呢?B是否也停止工作,或者只是在处理的异常中崩溃 您可以在服务a中实现一

我有两个服务,它们托管在两个不同的服务器上

比如说,服务器A上的服务A和服务器B上的服务B。我的服务B依赖于服务A。我想实现一些功能,比如当服务B明确崩溃/停止时(由于某种原因),我想服务A模仿服务B,从而停止服务A

我可以知道如何实现此功能吗


注意:我捕获了应用程序中所有可能的异常,但由于一些数据库问题或一些未处理的异常(在验证环境中未出现),我需要将此功能放置。

你说服务B依赖于服务A吗?那么,如果服务A停止工作会发生什么呢?B是否也停止工作,或者只是在处理的异常中崩溃

您可以在服务a中实现一个
BackgroundWorker
,它调用服务B中的特定函数,并等待回调。如果在
BackgroundWorker
DoWork
事件中放置
Thread.Sleep()
,则可以按设定的时间间隔运行它。当
backgroundWorker
没有从功能中获得返回时,您可以停止服务a


或者您可以在服务B上使用带有
回调函数的
WCF
,但这似乎有点过分。

服务B正在处理服务a发送的记录,因此在服务a崩溃时停止服务B并不重要。如果两个服务都在不同的服务器上,它可以工作吗?这取决于您是否可以通过端口或类似的东西从外部e.i访问服务B。但是,除了WCF,我不知道如何做。WCF为您做了很多事情,特别是在这样一个简单的实现中,但需要进行一些设置,它使用服务器a和服务器B上的http/https/net.tcp端口进行通信。我不知道如何在不使用通信层的情况下通过后台工作程序访问服务器B为什么要在服务之间引入此功能?请查看ReliableSession.InactivityTimeout和ICommunicationObject.Faulted event