• 异步函数Demo


     1         private static async Task<String> IssueClientRequestAsync(string serverName, string message)
     2         {
     3             Console.WriteLine("进入IssueClientRequestAsync");
     4             //NamedPipeClientStream 公开 System.IO.Stream 周围命名管道,支持同步和异步读取和写入操作。
     5             //新实例初始化 System.IO.Pipes.NamedPipeClientStream 使用指定的管道和服务器名称,以及指定的管道方向和管道选项的类。
     6             // 参数:
     7             //   serverName:
     8             //     要连接的远程计算机的名称,或者为“.”,以指定本地计算机。
     9             //
    10             //   pipeName:
    11             //     管道的名称。
    12             //
    13             //   direction:
    14             //     确定管道方向的枚举值之一。(此处指定的管道方向是双向的)
    15             //
    16             //   options:
    17             //     确定如何打开或创建管道的枚举值之一。
    18             using (var pipe = new NamedPipeClientStream(serverName, "PipeName", PipeDirection.InOut, PipeOptions.Asynchronous | PipeOptions.WriteThrough))
    19             {
    20                 Console.WriteLine("Connect");
    21                 //连接到具有无限超时值的等待的服务器。
    22                 //必须在设置ReadMode之前连接
    23                 pipe.Connect();
    24 
    25                 Console.WriteLine("ReadMode");
    26                 //对象的读取模式
    27                 //指示是发送和读取的 消息流 的形式在管道中的数据,另外还有字节流(Byte)
    28                 pipe.ReadMode = PipeTransmissionMode.Message;
    29 
    30                 Console.WriteLine("request");
    31                 byte[] request = Encoding.UTF8.GetBytes(message);
    32 
    33                 Console.WriteLine("WriteAsync");
    34                 //将字节序列异步写入当前流,并将流的当前位置提升写入的字节数。
    35                 //   buffer:
    36                 //     从中写入数据的缓冲区。
    37                 //
    38                 //   offset:
    39                 //     buffer 中的从零开始的字节偏移量,从此处开始将字节复制到该流。
    40                 //
    41                 //   count:
    42                 //     最多写入的字节数。
    43                 await pipe.WriteAsync(request, 0, request.Length);
    44 
    45                 Console.WriteLine("response");
    46                 byte[] response = new byte[1000];
    47 
    48                 Console.WriteLine("ReadAsync");
    49                 //从当前流异步读取字节序列,并将流中的位置提升读取的字节数。
    50                 //   buffer:
    51                 //     数据写入的缓冲区。
    52                 //
    53                 //   offset:
    54                 //     buffer 中的字节偏移量,从该偏移量开始写入从流中读取的数据。
    55                 //
    56                 //   count:
    57                 //     最多读取的字节数。
    58                 int bytesRead = await pipe.ReadAsync(response, 0, response.Length);
    59 
    60                 Console.WriteLine("retuen");
    61                 return Encoding.UTF8.GetString(response, 0, bytesRead);
    62             }
    63         }
    64 
    65         private static void NamedPipeClientStreamTest()
    66         {
    67             using (NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "testpipe", PipeDirection.In))
    68             {
    69 
    70                 // Connect to the pipe or wait until the pipe is available.
    71                 Console.Write("Attempting to connect to pipe...");
    72                 pipeClient.Connect();
    73 
    74                 Console.WriteLine("Connected to pipe.");
    75                 Console.WriteLine("There are currently {0} pipe server instances open.", pipeClient.NumberOfServerInstances);
    76                 using (StreamReader sr = new StreamReader(pipeClient))
    77                 {
    78                     // Display the read text to the console
    79                     string temp;
    80                     while ((temp = sr.ReadLine()) != null)
    81                     {
    82                         Console.WriteLine("Received from server: {0}", temp);
    83                     }
    84                 }
    85             }
    86         }
  • 相关阅读:
    SpringCloud初体验:四、API GateWay 服务网关
    SpringCloud初体验:三、Feign 服务间调用(FeignClient)、负载均衡(Ribbon)、容错/降级处理(Hystrix)
    SpringCloud初体验:二、Config 统一配置管理中心
    SpringCloud初体验:一、Eureka 服务的注册与发现
    PHP 通过实现 Iterator(迭代器)接口来读取大文件文本
    SpringCloud初体验:前言
    springboot利用MockMvc测试controller控制器
    vue通过(NGINX)部署在子目录或者二级目录实践
    PHP 设计模式 原型模式(Prototype)之深/浅拷贝
    PHPstorm配置PHPunit对composer引入的php代码进行单元测试
  • 原文地址:https://www.cnblogs.com/xuejietong/p/8970886.html
Copyright © 2020-2023  润新知