91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
德兴市| 固始县| 威信县| 丘北县| 沭阳县| 辉县市| 洪江市| 乌拉特中旗| 武陟县| 棋牌| 团风县| 台北县| 日土县| 将乐县| 应用必备| 铜陵市| 都昌县| 普安县| 黄山市| 麻城市| 中牟县| 吕梁市| 西藏| 延寿县| 灵寿县| 鸡西市| 尉犁县| 嘉黎县| 贵州省| 万载县| 浑源县| 石渠县| 星子县| 昆明市| 吕梁市| 清涧县| 肇源县| 德钦县| 沁水县| 商河县| 石屏县|