首页 > 其他分享 >使用Channel传递数据

使用Channel传递数据

时间:2023-10-23 16:36:49浏览次数:41  
标签:name static 使用 传递数据 public Channel string

上次我们使用了事件异步传递数据,这次我们使用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,
它不能用在异步,你可以封装完善它,扩展它

标签:name,static,使用,传递数据,public,Channel,string
From: https://www.cnblogs.com/guchen33/p/17782767.html

相关文章

  • Makefile基础使用和实战详解
    一、基础Makefile其实只是一个指示make程序如何为我们工作的命令文件,我们说Makefile其实是在说make。而对于项目来说,Makefile是指软件项目的编译环境。Makefile的好坏对于项目开发有些什么影响呢?设计得好的Makefile,当我们重新编译时,只需编译那些上次编译成功后修改过的......
  • 常用命令(磁盘使用)--iostat
    一、功能cpu使用情况,磁盘使用情况二、安装yuminstallsysstat三、使用命令行参数:-c:显示系统cpu信息-d:只显示设备使用情况-h:人性化输出-m:mb/s为单位-k:Kb/s为单位-o:用json格式输出-t:显示每次统计信息时间,脚本监控适合-p:指定设备统计-x:打印更详细扩展内容使用实......
  • 在Delphi中使用正则表达式校验中文姓名
    usessystem.RegularExpressions;functionIsChineseName(constaName:string;constaMaxLength:Integer=10):Boolean;beginvarPattern:='^[\x{4E00}-\x{9FA5}]{2,'+aMaxLength.ToString+'}(·[\x{4E00}-\x{9FA5}]{2,'+aMaxLength.ToString......
  • R : 使用正则表达式提取属水平的名称
    setwd("C:\\Users\\Administrator\\Desktop")#读取txt文件microbial_names<-readLines("your_input_file.txt")#使用正则表达式提取属水平的名称genus_names<-sapply(microbial_names,function(name){matches<-regmatches(name,regexpr(&q......
  • 显卡虚拟化使用及配置技术
    http://www.360doc.com/content/18/0814/21/9824753_778296481.shtml将GPU技术与虚拟化技术融合,是近年来虚拟化行业中比较热门的技术课题,通过此种方式,将大大降低图形图像用户的使用成本以及提高数据的安全性。接下来我们将了解显卡虚拟化使用及配置技术。  一、简介本......
  • linux cat查看文件使用grep实现多条件多场景过滤
    在实际应用过程中,我们查看日志文件时,经常会根据一定自定义的词语过滤,查看所有相关的数据行。最近遇到用cat查看文件,需要根据多关键词进行不同的场景过滤,在这里进行一个简单的总结:1.过滤多个关键词同时存在catfile.log|grep-e'关键词1'|grep-e'关键词2'#或者grep-......
  • spring data jpa 使用原生sql查询数据库 原生sql中有in关键字 该如何传参?直接传List集
    springdatajpa使用原生sql查询数据库原生sql中有in关键字该如何传参?直接传List集合就能找到数据,解析List集合交给springdatajpa框架去做遇到问题?第一次写的时候in关键字后面传的是将List集合转化为一个这样的字符串,"'123','23','23'" @Query(nativeQuery=true,......
  • git push使用LFS上传超过100M的文件,亲测有效
     一、问题描述使用gitpush将一个173.86MB的文件推送到GitHub时出现如下报错remote:error:Trace:5c39a1831dc9eced8723579b000596bbbeb91a9069931bbdf49b058aaaf1f64cremote:error:Seehttps://gh.io/lfsformoreinformation.remote:error:Filelinux-zero-......
  • 安装dita-ot并使用dita-ot生成pdf和html文档
    java版本dita-ot版本测试文档生成的文件包可以在dita-ot官网下载1.安装jdkhttps://blog.csdn.net/bestsongs/article/details/1229390812.解压dita-ot的zip包就可以了3.使用方法输出的文件在......
  • MounRiver使用技巧及配置7
    1、关于MRS环境下nop指令的用法关于nop指令的用法,使用之前可按照下图进行宏定义,具体如下图:#define nop()   asmvolatile("nop") 2、于MRS环境下将数据放在RAM指定位置报错问题程序编译报错:cannotmovelocationcounterbackwards报错原因:链接的过程中,出现这种问......