您的位置:首页 > 产品设计 > UI/UE

C#中 Queue 的简单应用例子

2018-03-06 23:27 399 查看
本例子用于演示C#中队列的处理,当声明一个队列后,开启一个线程监控此队列,当有消息时就立刻传送出去。
using System;
using System.Collections;    //队列
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;   //线程调用

namespace WindowsApplication3
{
public partial class Form1 : Form
{
//该事例用于演示C#中队列的处理,当声明一个队列后,开启一个线程监控此队列,当有消息时就立刻传送出去

Thread th = null;               //用于监控队列,当有消息时就立刻传送出去
Queue queueMsg = new Queue();   //用于存消息的队列

public Form1()
{
InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)
{
th = new Thread(sendMsg);
th.Start();     //开始监控队列中的消息,当有消息时就立刻传送出去
}

/// <summary>
/// 从队列中发送消息
/// </summary>
private void sendMsg()
{
while (true)
{
if (queueMsg.Count > 0)                         //如果有消息就立刻传送出去
{
string tmp = (string)queueMsg.Dequeue();    //出队
MessageBox.Show(tmp);
continue;
}
Thread.Sleep(1000);
}
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
th.Abort(); //停止线程
}

private void button1_Click(object sender, EventArgs e)
{
//往队列填入3条消息
for (int i = 1; i <= 3; i++)
{
queueMsg.Enqueue("消息" + i.ToString());
}

}

}
}
运行结果是:点击“向队列填入3条消息”之后,依次弹出三个Messagebox。


  

 

 


以上示例,有两个技术要点需要掌握:
1、队列的写入方法Enqueue和移出方法Dequeue;
2、线程的初始化及线程函数的启用。

Queue的基础知识:
1、Queue定义System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。 2、优点1、能对集合进行顺序处理(先进先出)。2、能接受null值,并且允许重复的元素。 3、 Queue的构造器
构造器函数注释
Queue ()初始化 Queue 类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0)。
Queue (ICollection)初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与所复制的元素数相同的初始容量并使用默认增长因子。
Queue (Int32)初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用默认增长因子。
Queue (Int32, Single)初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用指定的增长因子。
 4、Queue的属性
属性名注释
Count获取 Queue 中包含的元素数。
 5. Queue的方法
方法名注释
Void Clear()从 Queue 中移除所有对象。
Bool Contains(object obj)确定某元素是否在 Queue 中。
Object Clone()创建 Queue 的浅表副本。
Void CopyTo(Array array,int index)从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。
Object Dequeue()移除并返回位于 Queue 开始处的对象。
Void Enqueue(object obj)将对象添加到 Queue 的结尾处。
Object Peek()返回位于 Queue 开始处的对象但不将其移除。
Object[]ToArray()将 Queue 元素复制到新数组。
Void TrimToSize()将容量设置为 Queue 中元素的实际数目。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C#  thread Queue