中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c# blockingcollection怎樣實現數據過濾

c#
小樊
81
2024-11-21 05:47:10
欄目: 編程語言

在C#中,BlockingCollection 是一個線程安全的集合,用于在生產者和消費者之間傳遞數據。要實現數據過濾,你可以在將數據添加到 BlockingCollection 之前對其進行過濾,或者使用 IEnumerable 接口的 Where 方法進行過濾。

以下是一個簡單的示例,展示了如何使用 BlockingCollection 存儲整數并在添加之前進行過濾:

using System;
using System.Collections.Concurrent;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        // 創建一個線程安全的集合
        BlockingCollection<int> numbers = new BlockingCollection<int>();

        // 創建一個生產者任務,用于向集合中添加數據
        Task producer = Task.Run(() =>
        {
            for (int i = 1; i <= 10; i++)
            {
                // 過濾掉偶數
                if (i % 2 != 0)
                {
                    numbers.Add(i);
                    Console.WriteLine($"Produced: {i}");
                }
            }
            numbers.CompleteAdding();
        });

        // 創建一個消費者任務,用于從集合中獲取數據
        Task consumer = Task.Run(() =>
        {
            foreach (var number in numbers.GetConsumingEnumerable())
            {
                Console.WriteLine($"Consumed: {number}");
            }
        });

        // 等待生產者和消費者任務完成
        Task.WaitAll(producer, consumer);
    }
}

在這個示例中,我們創建了一個 BlockingCollection<int> 實例,并啟動了一個生產者任務。生產者任務會生成1到10之間的整數,但只將奇數添加到集合中。然后,我們啟動了一個消費者任務,它會從集合中獲取數據并打印出來。最后,我們等待生產者和消費者任務完成。

請注意,這個示例使用了 Task.Run 來創建生產者和消費者任務,并使用 Task.WaitAll 等待它們完成。在實際應用中,你可能需要根據具體需求調整代碼。

0
尼玛县| 汝南县| 得荣县| 洞头县| 钦州市| 潞西市| 根河市| 庆元县| 唐山市| 浦东新区| 清流县| 寿宁县| 西丰县| 安庆市| 安乡县| 通州区| 本溪| 上虞市| 西乌珠穆沁旗| 云南省| 余江县| 陆川县| 团风县| 垣曲县| 潜山县| 常山县| 秦皇岛市| 无锡市| 兰溪市| 垣曲县| 若羌县| 呼玛县| 图片| 卓尼县| 若尔盖县| 临桂县| 汾西县| 白银市| 甘德县| 茌平县| 军事|