c# System.Threading.Channels.Channel 的使用


先貼一個代碼

class Program { static void Main(string[] args) { var channels = Channel.CreateBounded<Mail>(2); var mail1 = new Mail(1, $"Message #{1}"); var mail2 = new Mail(2, $"Message #{1}"); var mail3 = new Mail(3, $"Message #{1}"); var mail4 = new Mail(4, $"Message #{1}"); var mail5 = new Mail(5, $"Message #{1}"); var mail6 = new Mail(6, $"Message #{1}"); var b0 = channels.Writer.TryWrite(mail1); b0 = channels.Writer.TryWrite(mail2); b0 = channels.Writer.TryWrite(mail3); b0 = channels.Writer.TryWrite(mail4); b0 = channels.Writer.TryWrite(mail5); b0 = channels.Writer.TryWrite(mail6); Mail mail; var b1 = channels.Reader.TryRead(out mail); b1 = channels.Reader.TryRead(out mail); b1 = channels.Reader.TryRead(out mail); b1 = channels.Reader.TryRead(out mail); b1 = channels.Reader.TryRead(out mail); b1 = channels.Reader.TryRead(out mail); Console.WriteLine("Hello World!"); } } public class Mail { public Mail(int id, string content) { Id = id; Content = content; } public int Id { get; } public string Content { get; } }

Channel 通道的意思

Writer寫入對象后會保存起來,等到reader 讀取后就消費掉, 寫入讀取按照隊列的形式,即 先寫的先讀取
CreateBounded 可以做一些設置,設置大小個數 ,如上述 Channel.CreateBounded<Mail>(2);
CreateUnbounded 無限制 Channel.CreateUnbounded<Mail>();
待續


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM