使用命名管道快速与服务通信

时间:2018-12-04 21:07:56

标签: c#

我正在创建一个用于操纵鼠标移动的服务,我需要我的应用程序能够与该服务进行通信,以告诉其如何移动鼠标。

旁注,我这样做是在服务中进行的,因为我相信这也将使其能够在提升的应用程序上工作,因为当提升的应用程序具有焦点时,无法从普通桌面应用程序使用SendInputs。 >

我已经进行了一些初步的研究,看到人们说命名管道是与服务进行通信的最佳方式,但是它将每秒能够处理约500条消息(我希望鼠标移动尽可能流畅) )?

我对命名管道有一些基本经验,但是没有什么能处理如此快速的数据。

下面是我在应用程序其他区域中使用的基本代码;无需任何修改即可在服务中正常工作吗?正在将数据解析为字符串,然后从该字符串中反序列化我的数据是最有效的方法,以我的经验,使用字符串可以以这种速度降低速度。

    NamedPipeServerStream s = new NamedPipeServerStream("MyPipe", PipeDirection.In, 2);
    Action<NamedPipeServerStream> a = callBack;
    a.BeginInvoke(s, ar => { }, null);

    private void callBack(NamedPipeServerStream pipe)
    {
        while (!SharedProperties.IsClosing)
        {
            pipe.WaitForConnection();
            StreamReader sr = new StreamReader(pipe);
            string message = sr.ReadToEnd();
            processPipeMessage(message);
            pipe.Disconnect();
        }
    }

0 个答案:

没有答案