上次我们使用了事件异步传递数据,这次我们使用Channel在一个线程通信传递数据

直接上代码

 public static class ChannelSample
{
private static readonly Channel<KeyValuePair<string, string>> channel = Channel.CreateUnbounded<KeyValuePair<string, string>>(); public static void SetLocalValue(string name, string value)
{
channel.Writer.TryWrite(new KeyValuePair<string, string>(name, value));
} public static string GetLocalValue(string name)
{
while (channel.Reader.TryRead(out KeyValuePair<string, string> item))
{
if (item.Key == name)
{
return item.Value;
}
}
return null;
}
} public class WriteSample
{
public void Write()
{
ChannelSample.SetLocalValue("name","Hello");
}
}
public class ReadSample
{
public void Read()
{
ChannelSample.GetLocalValue("name");
}
}

首先我们自己封装一个静态类,它有着写入和发送的功能,这样在需要的地方可以将数据传递过去

在上述代码中,我们在WriteSample类中使用我们封装好的静态类写了Hello,并且为它取名name

接着在ReadSample类中拿到Hello,

它不能用在异步,你可以封装完善它,扩展它

使用Channel传递数据的更多相关文章

  1. Android中Service通信(一)——启动Service并传递数据

    启动Service并传递数据的小实例(通过外界与服务进行通信): 1.activity_main.xml: <EditText android:layout_width="match_ ...

  2. WCF分布式开发步步为赢(8):使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据

    数据集(DataSet).数据表(DataTable).集合(Collection)概念是.NET FrameWork里提供数据类型,在应用程序编程过程中会经常使用其来作为数据的载体,属于ADO.NE ...

  3. Netty中的Channel之数据冲刷与线程安全(writeAndFlush)

    本文首发于本博客,如需转载,请申明出处. GitHub项目地址 InChat 一个轻量级.高效率的支持多端(应用与硬件Iot)的异步网络应用通讯框架 前言 本文预设读者已经了解了一定的Netty基础知 ...

  4. angular input标签只能单向传递数据的问题

    angularjs input标签只能单向传递数据的问题 <ion-view title = "{{roomName}}" style = "height:90%; ...

  5. activity与fragment之间传递数据

    总结:无论是activity给fragment传递数据,还是fragment给activity传递数据,都把activity和fragment都当做一个普通的对象,调用它的方法,传递参数. 1.Fra ...

  6. android跟服务器使用json传递数据

    最近在做项目,使用了json传递数据,把服务器对象转换成json字符串返回,android使用gson包解析json字符串变成对象. 1.服务器代码编写,我这边是在servlet里面 Peron pe ...

  7. 小菜学习Winform(五)窗体间传递数据

    前言 做项目的时候,winfrom因为没有B/S的缓存机制,窗体间传递数据没有B/S页面传递数据那么方便,今天我们就说下winfrom中窗体传值的几种方式. 共有字段传递 共有字段传递实现起来很方便, ...

  8. Intent(三)向下一个活动传递数据

    向下传递活动很简单,可以我采用putExtra()方法的重载,把我们想要传递的数据暂时放在intent中,启动活动时从这里取就可以了. 首先我们在MainActivity(主活动)显式声明intent ...

  9. MVC学习系列3--怎么从控制器向视图传递数据

    在MVC中,从控制器到视图,传递数据,可以使用 ViewData 和 ViewBag:同样从视图到控制器,传递数据,可以使用Post,QueryString,或者隐藏域:最后从控制器到控制器,传递数据 ...

  10. Intent之前的对象传递与fragment传递数据

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

随机推荐

  1. JS Leetcode 179. 最大数 题解分析,sort a-b与b-a的区别,sort排序原理解析

    壹 ❀ 引 今天的题目来自LeetCode179. 最大数,题目描述如下: 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数. 注意:输出结果可能非常大,所以你 ...

  2. NC227595 跳跳跳

    题目链接 题目 题目描述 dd在玩跳格子游戏,具体游戏规则如下, \(n\) 个格子呈环形分布,顺时针方向分别标号为 \(1\sim n\) ,其中 \(1\) 和 \(n\) 相邻,每个格子上都有一 ...

  3. OCR 02: Tesseract-OCR

    Catalog OCR 01: EasyOCR OCR 02: Tesseract-OCR OCR 03: PaddleOCR Project Host And Brief Official Site ...

  4. Ubuntu下使用PlatformIO开发STC89/STC12/Arduino

    安装VSCode 从 https://code.visualstudio.com/Download 下载最新的 deb 版, 通过命令行安装 sudo apt install ./code_1.59. ...

  5. RDM6300 125KHz ID卡读卡器

    RDM6300 RDM6300是一个针对125KHz ID卡的读卡模块, 用于读取EM4100兼容ID卡信息, 由一片C8051F330和一片LM358D双运放组成 注: EM4100, 4200卡是 ...

  6. 【Lua】xLua逻辑热更新

    1 前言 ​ Lua基础语法 中系统介绍了 Lua 的语法体系,ToLua逻辑热更新 中介绍了 ToLua 的应用,本文将进一步介绍 Unity3D 中基于 xLua 实现逻辑热更新. ​ 逻辑热更新 ...

  7. Hooks与普通函数的区别

    Hooks与普通函数的区别 在这里的Hooks具体指的是自定义Hooks,自定义的Hooks与我们定义的普通函数类似,都可以封装逻辑,以实现逻辑的复用.Hooks实际上是一种特殊的函数,而由于Hook ...

  8. Javascript操作对象数组实现增删改查

    1.介绍 最近帮朋友弄一个简单的针对json数组的增删改成页面,正好涉及到了js去操作对象数组实现增删改查功能.我估计很多朋友应该也会遇到这类操作,所以记录一下以便分享. 2.数据准备 这里我就以学生 ...

  9. spring boot与junit集成测试

    先创建一个REST接口 package com.laoxu.gamedog.controller; import org.springframework.web.bind.annotation.Req ...

  10. 使用marquee标签实现文字滚动

    代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...