91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在C#利用命名管道Pipe實現進程通信

發布時間:2020-12-29 14:06:07 來源:億速云 閱讀:539 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關怎么在C#利用命名管道Pipe實現進程通信,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1.新建解決方案NamedPipeExample 新建兩個項目:Client和Server,兩者的輸出類型均為“Windows 應用程序”。整個程序的結構如下圖所示。

怎么在C#利用命名管道Pipe實現進程通信

此Form1為Client的窗體,如下圖所示。

怎么在C#利用命名管道Pipe實現進程通信

后端代碼,如下。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.IO;
using System.IO.Pipes;
using System.Security.Principal;

namespace Client
{
  public partial class Form1 : Form
  {
    NamedPipeClientStream pipeClient =
      new NamedPipeClientStream("localhost", "testpipe", PipeDirection.InOut, PipeOptions.Asynchronous, TokenImpersonationLevel.None);
    StreamWriter sw = null;
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      try
      {
        pipeClient.Connect(5000);
        sw = new StreamWriter(pipeClient);
        sw.AutoFlush = true;
      }
      catch (Exception ex)
      {
        MessageBox.Show("連接建立失敗,請確保服務端程序已經被打開。");
        this.Close();
      }
    }

    private void btnSend_Click(object sender, EventArgs e)
    {
      if (sw != null)
      {
        sw.WriteLine(this.txtMessage.Text);
      }
      else
      {
        MessageBox.Show("未建立連接,不能發送消息。");
      }
    }
  }
}

此Form1為Server的窗體,如下圖所示

怎么在C#利用命名管道Pipe實現進程通信

后端代碼,如下。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Server
{
  public partial class Form1 : Form
  {
    NamedPipeServerStream pipeServer =
      new NamedPipeServerStream("testpipe", PipeDirection.InOut, 1, PipeTransmissionMode.Message, PipeOptions.Asynchronous);
    public Form1()
    {
      InitializeComponent();
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void Form1_Load(object sender, EventArgs e)
    {
      ThreadPool.QueueUserWorkItem(delegate
      {
        pipeServer.BeginWaitForConnection((o) =>
        {
          NamedPipeServerStream pServer = (NamedPipeServerStream)o.AsyncState;
          pServer.EndWaitForConnection(o);
          StreamReader sr = new StreamReader(pServer);
          while (true)
          {
            this.Invoke((MethodInvoker)delegate { lsvMessage.Text = sr.ReadLine(); });

          }
        }, pipeServer);
      });
    }

    private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
    {

    }
  }
}

關于怎么在C#利用命名管道Pipe實現進程通信就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚松县| 大关县| 桓仁| 鸡西市| 内乡县| 武宣县| 锦屏县| 新余市| 新平| 鄄城县| 斗六市| 孝昌县| 五台县| 千阳县| 敦化市| 九寨沟县| 德兴市| 吴旗县| 积石山| 鲁山县| 金塔县| 富裕县| 宁阳县| 鹿邑县| 宁南县| 博爱县| 荔浦县| 治县。| 即墨市| 鸡西市| 新乐市| 绵阳市| 三门峡市| 葫芦岛市| 南和县| 南雄市| 闻喜县| 会同县| 永平县| 海宁市| 康定县|