多线程和过程信令

时间:2012-01-30 10:28:52

标签: .net multithreading ipc

我有一个通过Windows服务(vb.net)执行的工作进程。它每5分钟执行一次并检查数据库中的“作业”表。我还有一个Web应用程序(asp.net vb),允许用户在发生错误时“暂停”当前正在运行的作业。

Web应用程序通知Windows服务停止处理的最佳方式是什么?它们在同一台机器上运行,但是如果你有一个建议,如果它们在不同的机器上运行会很棒。

我想避免数据库或文件系统调用在每次迭代期间检查“状态”。

我有一个存储每个工作进程的自定义信息的数据库 - 如果可以通过.Net检索它,我可以存储一个线程ID或进程ID,以使Web应用程序能够向服务应用程序发送消息吗?

3 个答案:

答案 0 :(得分:1)

您可能希望将服务作为WCF服务器。

然后,您可以通过网络应用或任何方便的地方与之进行通信。您还可以提供进度/反馈API以及命令/控制API - 这取决于您。

答案 1 :(得分:0)

在.Net Framework中有多种方法可以完成进程间通信。列举框架中可用的两个:

  • .NET Remoting
  • Windows Communication Foundation(WCF)

虽然第一个很简单但很旧,但新的方法应该是WCF。我建议你查阅Beginner's Guide to Windows Communication Foundation中的各种例子。

答案 2 :(得分:0)

您还可以使用依赖于系统信号量的named semaphore,允许您的流程实现生产者/消费者模式。