队列应用

一、队列的介绍

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);
                }
            }
        }

 

转载于:https://www.cnblogs.com/wangjinya/p/11037897.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值