本例子用于演示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的基础知识:
<