• 队列应用


    一、队列的介绍

    1. 队列是为了防止多用户并发会引发的异常,当多名用户同时处理一件事情的时候,就会造成数据混乱,那么为了防止这种,就要用到队列。并且队列一般是和多线程结合使用的。以及必要时将该类设置成单例模式。就是作为程序的唯一入口。

    二、 队列的定义:

    1. 第一种方式:   

    using System;
    using System.Collections;
    
    namespace CollectionsApplication
    {
       class Program
       {
          static void Main(string[] args)
          {
             Queue q = new Queue();
    
             q.Enqueue('A');
             q.Enqueue('M');
             q.Enqueue('G');
             q.Enqueue('W');
    Console.WriteLine(
    "Current queue: "); foreach (char c in q) Console.Write(c + " "); Console.WriteLine(); q.Enqueue('V'); q.Enqueue('H'); Console.WriteLine("Current queue: "); foreach (char c in q) Console.Write(c + " "); Console.WriteLine(); Console.WriteLine("Removing some values "); char ch = (char)q.Dequeue(); Console.WriteLine("The removed value: {0}", ch); ch = (char)q.Dequeue(); Console.WriteLine("The removed value: {0}", ch); Console.ReadKey(); } } }

    运行结果如下:

    2. 第二种定义的方式:为队列指定类型,如下指定了一个类的类型。并且在执行过程中,需要判断队列是否大于0,如果大于0说明有值,否则说明没有值

      public Queue<ViewModelContent> queue = new Queue<ViewModelContent>();
            //此处不需要修改的方法,因为是执行过程是先删后添加
            /// <summary>
            /// 向队列中添加数据
            /// </summary>
            /// <param name="id"></param>
            /// <param name="title"></param>
            /// <param name="content"></param>
            public void AddQueue(int id, string title, string content)
            {
                ViewModelContent viewModel = new ViewModelContent();
                viewModel.Id = id;
                viewModel.Title = title;
                viewModel.Content = content;
                viewModel.LuceneTypeEnum = LuceneTypeEnum.Add; 
                queue.Enqueue(viewModel);
            }
            /// <summary>
            /// 要删除的数据
            /// </summary>
            /// <param name="id"></param>
            public void DeleteQueue(int id)
            {
                ViewModelContent viewModel = new ViewModelContent();
                viewModel.Id = id;
                viewModel.LuceneTypeEnum = LuceneTypeEnum.Delete;
                //将要删除的数据放在队列中
                queue.Enqueue(viewModel);
            }
          
    
            /// <summary>
            /// 开始一个线程
            /// </summary>
            public void StartThread()
            {
                Thread thread = new Thread(WriteIndexContent);
                thread.IsBackground = true;
                thread.Start();
            }
            /// <summary>
            /// 检查队列中是否有数据,如果有数据获取。
            /// </summary>
            private void WriteIndexContent()
            {
                while (true)
                {
                    if (queue.Count > 0)
                    {
                        CreateIndexContent();
                    }
                    else
                    {
                        Thread.Sleep(3000);
                    }
                }
            }
  • 相关阅读:
    (转)STMFD和LDMFD指令个人理解分析
    [原创] linux下的串口调试工具
    详解Makefile 函数的语法与使用 (转)
    sed命令详解(转)
    [转]QT4解决中文乱码(tr的使用 | QTextCodec)
    新型的按键扫描程序,仅三行程序(转)
    VS2010旗舰版不能安装Silverlight4_Tools的解决方案
    ASP.NET MVC3+EF4+Oracle入门实例(六)
    一个ASP.NET文件下载类
    项目管理实践【四】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】
  • 原文地址:https://www.cnblogs.com/wangjinya/p/11037897.html
Copyright © 2020-2023  润新知