在C#中两个进程之间进行通信的最简单方法是什么?

时间:2011-03-02 03:28:41

标签: c# .net serialization

在同一台机器上有两个独立的项目A和B(你有他们的源代码),两者都可以编译成EXE文件。当A运行时,有一个类的实例,比方说a,我们希望它在运行时在B中的数据。什么是最简单的方法?面试问题和我的回答是:序列化并在B中反序列化。但是面试官对这个答案不满意,因为他告诉我“它可以更容易”。最后我放弃了,因为我没有更好的解决方案。你有什么想法?

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

我认为在这种情况下使用NamedPipes (System.IO.Pipes) NamedPipeServerStream会更好。

答案 2 :(得分:0)

有点晚了但你可以这样做......

不容易

服务器代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Server
{
    class Program
    {
        static void Main(string[] args)
        {
            var i = 0;
            while(true)
            {
                Console.WriteLine(Console.ReadLine() + " -> " + i++);
            }
        }
    }
}

客户代码

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.FileName = "Server.exe";
            p.Start();

            var t = new Thread(() => { while (true) { Console.WriteLine(p.StandardOutput.ReadLine()); }});
            t.Start();

            while (true)
            {
                p.StandardInput.WriteLine(Console.ReadLine());
            }
        }
    }
}