C#应用程序之间的数据流

C#应用程序之间的数据流,c#,wpf,sockets,C#,Wpf,Sockets,我正在尝试在两个应用程序之间共享数据:第一个应用程序连续地从传感器获取数据,我所需要做的就是在接收数据时将这些数据传输到另一个(WPF)应用程序(并绘制一个图表) 数据通过EventHandler接收,然后通过套接字传输,如下所示: static TcpClient client = new TcpClient("localhost", 8181); static double w, dba; static void Write() { try

我正在尝试在两个应用程序之间共享数据:第一个应用程序连续地从传感器获取数据,我所需要做的就是在接收数据时将这些数据传输到另一个(WPF)应用程序(并绘制一个图表)

数据通过EventHandler接收,然后通过套接字传输,如下所示:

    static TcpClient client = new TcpClient("localhost", 8181);
    static double w, dba;

    static void Write()
    {
        try
        {
            Stream s = client.GetStream();
            StreamReader sr = new StreamReader(s);
            StreamWriter sw = new StreamWriter(s);
            sw.AutoFlush = true;
            while (true)
            {
                String line = "W:" + w + "DB/A:" + dba;
                sw.Write(line);
                Console.WriteLine(sr.ReadLine());
            }
            s.Close();
        }
        finally
        {
            client.Close();
        }
    }
问题是,我需要把它放在一个单独的线程中吗?(正如我尝试的,没有成功)因为这样,当eventHandler不断被触发并生成数据(将其存储到两个变量中)时,软件似乎无法继续

抱歉,如果问题有点模糊,这是我第一次尝试分布式应用,所以我也有点困惑。。任何建议或帮助都将不胜感激

TIA

使用,允许您在应用程序之间直接共享内存。它将比大多数其他方法快得多

请看名为“非持久内存映射文件”的部分,该部分详细介绍了如何通过字符串名称共享内存段。我在一个用于调试目的的应用程序中使用了它,它的速度足够快,我的C#应用程序可以实时读取本机应用程序的内存

<>如果你通过这个方法传输数据,考虑你一般如何传输数据。确定轮询频率(比如每100ms),并让应用程序将数据写入内存映射文件。然后让应用程序B读取该内存映射文件并将其本地存储在集合中。这是你的变速器


因此A基本上将相同的结构写入并重写到内存映射文件中,B以给定的轮询速率读取并将轮询内容存储在集合中。

如果两个应用程序都是.net,为什么不使用WCF进行进程间通信:比使用文件更健壮。查看此链接,这应该在一段时间内起作用(正确),以保持传输,对吗?好吧,问题是。。我尝试过,我可以通过StreamWriter向WPF应用程序发送消息,但我不能同时传输和收集数据。你能给我举一个例子,说明如何使用内存映射文件来传输数据吗?只是编辑了一些传输逻辑。MSDN文章清楚地概述了如何从MMF中写入和读取数据,因此传输更多的是一个逻辑问题,而不是语法问题;这就是为什么没有发布代码。WCF的性能不如MMF,如果她正在进行传感器轮询,她可能需要非常快的速度。您是否要求两个应用同时运行?如果其中一个没有运行,您希望发生什么?