亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
巴里| 彰化县| 高淳县| 体育| 永年县| 盐池县| 绵阳市| 雷波县| 九龙坡区| 荣成市| 澳门| 广元市| 安吉县| 华坪县| 涞水县| 揭东县| 陆良县| 资讯| 武穴市| 南江县| 肃南| 沁阳市| 郧西县| 岳池县| 云南省| 普格县| 乐安县| 上高县| 孟连| 冕宁县| 罗田县| 和林格尔县| 子洲县| 舟曲县| 黔西| 定日县| 平度市| 寻乌县| 台中市| 峡江县| 神池县|