在新进程中运行方法

Jac*_*cek 7 .net c# process

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

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

    }

    private void doAction()
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 0

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

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

我确信还有其他方法,但这是三种最常见的方法。

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