使用MSMQ传送文字、类、图片

学习MSMQ期间做的测试程序。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml.Serialization;
using System.IO;

namespace msmqApp
{
    
public partial class Form1 : Form
    
{
        
public Form1()
        
{
            InitializeComponent();
        }

        
int iCount = 0;
        
/// <summary>
        
/// 发送文字。
        
/// </summary>

        private void btnSend1_Click(object sender, EventArgs e)
        
{
            iCount
++;
            
try
            
{
                msgq1.Send(
"Message Contents: "+iCount);
            }

            
catch(Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }

        }

        
/// <summary>
        
/// 接收文字。
        
/// </summary>

        private void btnReceive1_Click(object sender, EventArgs e)
        
{
            System.Messaging.Message m;
            
string str;
            
try
            
{
                m 
= msgq1.Receive(new TimeSpan(003));
                str
=(string)m.Body;
            }

            
catch
            
{
                str 
= "没有返回消息。";
            }

            MessageBox.Show(str);
        }

        
/// <summary>
        
/// 发送一个类。
        
/// </summary>

        private void btnSendClass_Click(object sender, EventArgs e)
        
{
            Student no1 
= new Student();
            no1.name 
= "my";
            no1.age 
= 20;
            no1.sex 
= "";

            Student no2 
= new Student();
            no2.name 
= "朋友1";
            no2.age 
= 21;
            no2.sex 
= "";

            Student no3 
= new Student();
            no3.name 
= "朋友2";
            no3.age 
= 22;
            no3.sex 
= "";

            no1.friends.Add(no2);
            no1.friends.Add(no3);

            System.Messaging.Message m 
= new System.Messaging.Message();
            m.Body 
= no1;
            
try
            
{
                msgq1.Send(m);
            }

            
catch(Exception ex)
            
{
                MessageBox.Show(ex.Message 
+ " " + ex.InnerException.Message);
            }

        }

        
/// <summary>
        
/// 接收一个类。
        
/// </summary>

        private void btnReceiveClass_Click(object sender, EventArgs e)
        
{
            System.Messaging.Message m;
            Student st;
            
try
            
{
                m
=msgq1.Receive(new TimeSpan(0,0,3));
                m.Formatter 
= new System.Messaging.XmlMessageFormatter(new Type[] typeof(Student) });
                st 
= (Student)m.Body;
                
string str = " name:"+st.name;
                str 
+= "\r\n age:"+st.age;
                str 
+= "\r\n sex:" + st.sex;
                str 
+= "\r\n friends:\r\n";
                
foreach (Student friend in st.friends)
                
{
                    str 
+= "[name:" +friend.name;
                    str 
+= " age:" + friend.age;
                    str 
+= " sex:" + friend.sex+"]\r\n";
                }

                MessageBox.Show(str);
            }

            
catch(Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }

        }

        
/// <summary>
        
/// 发送图片
        
/// </summary>

        private void btnSendImage_Click(object sender, EventArgs e)
        
{
            Stream imgStream;
            System.Messaging.Message mImg 
= new System.Messaging.Message();
            openFileDialog1.Filter 
= "ImageFile(*.bmp,*.jpg,*.gif)|*.bmp;*.jpg;*.gif";
            openFileDialog1.FilterIndex 
= 1;
            
if (openFileDialog1.ShowDialog() == DialogResult.OK)
            
{
                
if ((imgStream = openFileDialog1.OpenFile()) != null)
                
{
                    mImg.BodyStream 
= imgStream;
                    
try
                    
{
                        msgq1.Send(mImg);
                    }

                    
catch (Exception ex)
                    
{
                        MessageBox.Show(ex.Message);
                    }

                    
finally
                    
{
                        imgStream.Close();
                    }

                }

            }

        }

        
/// <summary>
        
/// 接收图片
        
/// </summary>

        private void btnReceiveImage_Click(object sender, EventArgs e)
        
{
            Bitmap bmp;
            Stream imgStream;
            System.Messaging.Message mImg 
= new System.Messaging.Message();
            
bool bReceive = false;
            
try
            
{
                mImg 
= msgq1.Receive(new TimeSpan(003));
                bReceive 
= true;
            }

            
catch
            
{
                MessageBox.Show(
"没有接收到消息。");
            }

            
try
            
{
                
if (bReceive)
                
{
                    imgStream 
= mImg.BodyStream;
                    bmp 
= new Bitmap(imgStream);
                    pictureBox1.Image 
= bmp;
                }

            }

            
catch(Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }

        }


        
Student类
    }

}

要使用MSMQ必须安装win消息队列组件。
posted @ 2008-03-11 11:52  小y  阅读(1772)  评论(3编辑  收藏  举报