C# 从一个正在运行的控制台应用程序向另一个发送消息
我有一个控制台应用程序正在与ftp服务器进行长时间同步。C# 从一个正在运行的控制台应用程序向另一个发送消息,c#,.net,ipc,C#,.net,Ipc,我有一个控制台应用程序正在与ftp服务器进行长时间同步。 另一个控制台应用程序使用一些需要更新的文件准备本地文件系统。 然后,第二个将等待第一个完成,然后再交换最终目录名,使其在web上可见 我搜索了使同步应用程序与第二个应用程序通信的最佳方法,即它已完成任务。看起来这是最适合的解决方案 问题有两个方面: 我说得对吗?有没有更直接的方法达到同样的结果 有没有一种托管(.net)方法可以做到这一点 IPC的其他流行选项包括: 命名管道 远程处理(.NET) 周转基金 如果您只需要同步,可以考
另一个控制台应用程序使用一些需要更新的文件准备本地文件系统。
然后,第二个将等待第一个完成,然后再交换最终目录名,使其在web上可见 我搜索了使同步应用程序与第二个应用程序通信的最佳方法,即它已完成任务。看起来这是最适合的解决方案 问题有两个方面:
- 我说得对吗?有没有更直接的方法达到同样的结果
- 有没有一种托管(.net)方法可以做到这一点
- 命名管道
- 远程处理(.NET)
- 周转基金
如果您只需要同步,可以考虑<代码>信号量< /C> >或<代码>互斥> <代码>对象。.NET的
System.Threading
命名空间中存在一些类。如果您创建这些类的命名版本,则它们将应用于整个计算机。如果您只需要通知一个应用程序另一个应用程序已完成其任务,最简单的方法是使用命名的EventWaitHandle。对象是在其未标记状态下创建的。第一个应用程序等待句柄,第二个应用程序在完成其工作时向句柄发出信号。例如:
// First application
EventWaitHandle waitForSignal = new EventWaitHandle(false, EventResetMode.ManualReset, "MyWaitHandle");
// Here, the first application does whatever initialization it can.
// Then it waits for the handle to be signaled:
// The program will block until somebody signals the handle.
waitForSignal.WaitOne();
设置第一个等待同步的程序。第二个应用程序同样简单:
// Second app
EventWaitHandle doneWithInit = new EventWaitHandle(false, EventResetMode.ManualReset, "MyWaitHandle");
// Here, the second application initializes what it needs to.
// When it's done, it signals the wait handle:
doneWithInit.Set();
当第二个应用程序调用Set时,它会向事件发出信号,第一个应用程序将继续。这听起来很好。我会立即测试并返回这里:)我不知道你说的一半单词,但会做一些研究:);1为我提供关键字的提示:)