异步函数Demo
- private static async Task<String> IssueClientRequestAsync(string serverName, string message)
- {
- Console.WriteLine("进入IssueClientRequestAsync");
- //NamedPipeClientStream 公开 System.IO.Stream 周围命名管道,支持同步和异步读取和写入操作。
- //新实例初始化 System.IO.Pipes.NamedPipeClientStream 使用指定的管道和服务器名称,以及指定的管道方向和管道选项的类。
- // 参数:
- // serverName:
- // 要连接的远程计算机的名称,或者为“.”,以指定本地计算机。
- //
- // pipeName:
- // 管道的名称。
- //
- // direction:
- // 确定管道方向的枚举值之一。(此处指定的管道方向是双向的)
- //
- // options:
- // 确定如何打开或创建管道的枚举值之一。
- using (var pipe = new NamedPipeClientStream(serverName, "PipeName", PipeDirection.InOut, PipeOptions.Asynchronous | PipeOptions.WriteThrough))
- {
- Console.WriteLine("Connect");
- //连接到具有无限超时值的等待的服务器。
- //必须在设置ReadMode之前连接
- pipe.Connect();
- Console.WriteLine("ReadMode");
- //对象的读取模式
- //指示是发送和读取的 消息流 的形式在管道中的数据,另外还有字节流(Byte)
- pipe.ReadMode = PipeTransmissionMode.Message;
- Console.WriteLine("request");
- byte[] request = Encoding.UTF8.GetBytes(message);
- Console.WriteLine("WriteAsync");
- //将字节序列异步写入当前流,并将流的当前位置提升写入的字节数。
- // buffer:
- // 从中写入数据的缓冲区。
- //
- // offset:
- // buffer 中的从零开始的字节偏移量,从此处开始将字节复制到该流。
- //
- // count:
- // 最多写入的字节数。
- await pipe.WriteAsync(request, , request.Length);
- Console.WriteLine("response");
- byte[] response = new byte[];
- Console.WriteLine("ReadAsync");
- //从当前流异步读取字节序列,并将流中的位置提升读取的字节数。
- // buffer:
- // 数据写入的缓冲区。
- //
- // offset:
- // buffer 中的字节偏移量,从该偏移量开始写入从流中读取的数据。
- //
- // count:
- // 最多读取的字节数。
- int bytesRead = await pipe.ReadAsync(response, , response.Length);
- Console.WriteLine("retuen");
- return Encoding.UTF8.GetString(response, , bytesRead);
- }
- }
- private static void NamedPipeClientStreamTest()
- {
- using (NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "testpipe", PipeDirection.In))
- {
- // Connect to the pipe or wait until the pipe is available.
- Console.Write("Attempting to connect to pipe...");
- pipeClient.Connect();
- Console.WriteLine("Connected to pipe.");
- Console.WriteLine("There are currently {0} pipe server instances open.", pipeClient.NumberOfServerInstances);
- using (StreamReader sr = new StreamReader(pipeClient))
- {
- // Display the read text to the console
- string temp;
- while ((temp = sr.ReadLine()) != null)
- {
- Console.WriteLine("Received from server: {0}", temp);
- }
- }
- }
- }
异步函数Demo的更多相关文章
- 『审慎』.Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历
异步Task简单介绍 本标题有点 哗众取宠,各位都别介意(不排除个人技术能力问题) —— 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 —— 异步编 ...
- Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历
Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历 https://www.cnblogs.com/shuxiaolong/p/DotNet_Task_BUG.html 异步Task简单 ...
- Vue异步组件Demo
Vue异步组件Demo 在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载.为了进一步简化,Vue.js 允许将组件定义为一个工厂函数,异步地解析组件的定义.Vue.js 只在组件需要 ...
- 简述异步编程&Promise&异步函数
前言:文章由本人在学习之余总结巩固思路,不足之前还请指出. 一.异步编程 首先我们先简单来回顾一下同步API和异步API的概念 1.同步API:只有当前的API执行完成之前,才会执行下一个API 例: ...
- Winform同步调用异步函数死锁原因分析、为什么要用异步
1.前言 几年前,一个开发同学遇到同步调用异步函数出现死锁问题,导致UI界面假死.我解释了一堆,关于状态机.线程池.WindowsFormsSynchronizationContext.Post.co ...
- 异步控制---实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出“end”
实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出"end" function func1(callback) { setTimeout ...
- Node.js用ES6原生Promise对异步函数进行封装
Promise的概念 Promise 对象用于异步(asynchronous)计算..一个Promise对象代表着一个还未完成,但预期将来会完成的操作. Promise的几种状态: pending:初 ...
- 异步函数封装请确保异步性(Javascript需要养成的良好习惯)
背景假设: 你有许多的配置信息存放在服务器上,因为配置太多,不希望每次都把所有的配置信息都写到前端,希望能需要用的时候再获取就好了. 因为Javascript单线程运行,你不希望堵塞ui渲染于是你专门 ...
- GCD,用同步/异步函数,创建并发/串行队列
队列 第一个参数:C语言字符串,标签 第二个参数: DISPATCH_QUEUE_CONCURRENT:并发队列 DISPATCH_QUEUE_SERIAL:串行队列 dispatch_queue_ ...
随机推荐
- 让IIS支持解析.json格式文件
原文出处链接及本声明. 原文链接:https://blog.csdn.net/jumtre/article/details/72630730 1.IIS内点击网站进入网站主页设置界面: 2.双击MIM ...
- webdriervAPI(CSS定位元素)
from selenium import webdriver driver = webdriver.Chorme() driver.get("http://www.baidu.co ...
- GitHub快速搭建个人博客
> 正所谓前人栽树,后人乘凉.> > 感谢[Huxpro](https://github.com/huxpro)提供的博客模板> > [我的的博客](https://fl ...
- Bootstrap 表单示例
1.打开https://getbootstrap.com/docs/4.3/examples/checkout/复制表单源码 2.清空main标签内容 3.粘贴表单源码 4.示例图
- PYTHON 100days学习笔记008-3:输入和输出
目录 Day008-03:Python3 输入和输出 1.输出格式美化 1.1 str.format()用法 1.2 旧式字符串格式化 2.读取键盘输入 3.读和写文件 4.文件对象的方法 4.1 f ...
- 2019牛客多校赛第一场 补题 I题
I题 Points Division 题意: 给你n个点,每个点有坐标(xi,yi)和属性(ai,bi),将点集划分为两个集合, 任意 A 集合的点 i 和 B 集合点 j, 不允许 xi > ...
- 【转帖】Linux的NUMA机制
Linux的NUMA机制 http://www.litrin.net/2014/06/18/linux的numa机制/ NUMA(Non-Uniform Memory Access)字面直译为“非一致 ...
- (三)mysql SQL 基本操作
文章目录 MySQL服务器对象 mysql 的基本操作 SQL的注释 库操作 表(字段)操作 数据操作 MySQL服务器对象 mysql 服务器对象内部分成了 4 层: 系统(DBMS)----> ...
- error LNK2001: unresolved external symbol __imp__closesocket@4
环境:Visual C++6.0 问题:链接错误 描述: Linking... NetSrv.obj : error LNK2001: unresolvedexternal symbol __imp_ ...
- 剑指offer17:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
1 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 2 思路和方法 (1)先在A中找和B的根节点相同的结点 (2)找到之后遍历对应位置的其他结点, ...