• .NET C# 泛型队列


    1.QueueHelper

    using System.Collections.Concurrent;
    using System.Runtime.CompilerServices;

    namespace WindowsFormsServer.Helper
    {
        public static class QueueHelper<T> where T : class
        {
            private static ConcurrentQueue<StrongBox<T>> _queue;

            public static ConcurrentQueue<StrongBox<T>> Queue
            {
                get { return _queue ?? (_queue = new ConcurrentQueue<StrongBox<T>>()); }
            }

            public static void AddQueue(T t)
            {
                if (_queue == null)
                    _queue = new ConcurrentQueue<StrongBox<T>>();
                _queue.Enqueue(new StrongBox<T>(t));
            }

            public static T DealQueue()
            {
                if (_queue == null)
                    _queue = new ConcurrentQueue<StrongBox<T>>();
                if (_queue.Count > 0)
                {
                    StrongBox<T> t;
                    if (_queue.TryDequeue(out t)) return t.Value;   
                }
                return null;
            }

            public static void EmptyQueue()
            {
                if (_queue == null)
                    _queue = new ConcurrentQueue<StrongBox<T>>();
                StrongBox<T> t;
                while(_queue.TryDequeue(out t))
                    t.Value = default(T);
            }

        }
    }
    2.使用方式:

    //①.入队列

    List<T> ts = new List<T>();

    xxx //此处批量为ts集合赋值

    foreach(var t in ts){

    QueueHelper<T>.AddQueue(t);//入队列

    }

    //②.出队列

    while(QueueHelper<T>.Queue.Count>0){

    T tempT = QueueHelper<T>.DealQueue();

    xxx //业务代码处理tempT

    }

  • 相关阅读:
    linux上安装mysql
    Linux上安装elasticsearch
    解决pyhton aiohttp ssl:None [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)
    mysql数据库的数据变更事件获取以及相关数据
    [天下小黑盒]打地鼠小助手
    看到当年自己学SQL Server 的笔记
    CodeFirst EF中导航属性的个人理解
    在Win10下如何安装IMSL6.0
    商品中台三期压测
    压测
  • 原文地址:https://www.cnblogs.com/jeff151013/p/11739258.html
Copyright © 2020-2023  润新知