7

是否可以在新的子进程中运行方法?在我的示例中,我可以执行方法 Run,它将在新进程(不是线程!)中执行私有方法 doAction

public class MyClass
{
    public void Run()
    {
        //what should I do there to run 'doAction' in new process?
        doAction();

    }

    private void doAction()
    {
        ...
    }
}
4

1 回答 1

0

进程不共享内存,它们之间需要一种机制进行通信。您可以为此使用多种机制之一:

  1. 文件或数据——一个进程写入文件或数据库,另一个进程根据数据或文件内容读取并执行某些方法
  2. 服务主机/客户端 - 使用 WCF、.NET Remoting、命名管道或直接 TCP/IP 通信机制,其中一个进程承载服务接口实现,调用进程(客户端)使用服务接口的代理来序列化和通信调用到主机进程 - 如果您想要有状态的请求/响应交互,这是最好的方法
  3. 消息队列 - 使用像 MSMQ 这样的消息队列,其中一个进程将消息发送到队列,另一个进程拾取并执行该方法

我敢肯定还有其他方法,但这是三种最常见的方法。

我最喜欢的是轻量级服务主机/客户端场景。有几个轻量级实用程序可以让您轻松完成此操作。您可以使用RemotingLite或我自己的 RemotingLite 扩展,它支持名为DuoVia.Net的命名管道。

于 2013-05-03T19:36:40.950 回答