在ASP.NET中进行消息处理(MSMQ) 三2011-12-06 博客园 Bēniaǒ在本文的前两篇文章里对MSMQ的相关知识点进行了介绍,很多阅读过这前两篇文章的朋友都曾问到过这样一些问题:1、如何把MSMQ应用到实际的项目中去呢?2、可不可以介绍一个实际的应用实例?3、......在前两篇文章里,关于MSMQ常用的技术点基本介绍完毕了,本文主要以MS开源项目PetShop中的MSMQ应用作为案例来介绍MSMQ在实际项目中的应用。在PetShop里,由于系统使用了多线程的专用应用程序来监控消息队列,在进入PetShop应用分析前,我们先来了解下关于多线程和MSMQ的相关知识点。一、多线程和MSMQ现在有这样一个需求,指定的消息队列里不管有无消息数据,我们通过一个多线程来监控这个队列,一但队列里的数据发生变化就做出相应的处理,比如把消息读取出来。根据这个需求,我们来做个示例,用一多线程把队列监控起来,如果队列里有消息数据,就把消息读取出来,如果没有则一直监视队列,当队列数据发生改变(有新的消息加入)的时候就作出处理(读取消息)。首先定义一个线程数组用于存储线程数;
1static private int ThreadNumber = 5; //5个线程序2static private Thread[] ThreadArray = new Thread[ThreadNumber];
我们把需要启动的线程装载入ThreadArray数组,通过一个遍历数组把所以的线程启动,实际这里只有5个线程。
1private void button1_Click(object sender, EventArgs e)2{3  StartThreads();4}56private void StartThreads()7{8  int counter; //线程计数9  for (counter = 0; counter < ThreadNumber; counter++)10  {11    ThreadArray[counter] = new Thread(new ThreadStart(MSMQListen));12    ThreadArray[counter].Start();13    this.richTextBox2.Text += (counter + 1).ToString() + "号线程开始!";14  }15}1617private void MSMQListen()18{19  while (true)20  {21    //取出队列里的消息22    MessageBox.Show(MsgQueue.ReceiveMessage());23  }24}