使用MSMQ传送文字、类、图片
学习MSMQ期间做的测试程序。
要使用MSMQ必须安装win消息队列组件。
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(0, 0, 3));
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(0, 0, 3));
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类
}
}
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(0, 0, 3));
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(0, 0, 3));
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消息队列组件。
-----------------------------------------------------------------