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

it2022-05-09  33

学习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类#region Student类        public class Student        {            public string name;            public System.Collections.ArrayList friends;            public int age;            public string sex;            public Student()            {                friends = new System.Collections.ArrayList();            }        }        #endregion    }} 要使用MSMQ必须安装win消息队列组件。

转载于:https://www.cnblogs.com/tuyile006/archive/2008/03/11/1100275.html

相关资源:DirectX修复工具V4.0增强版

最新回复(0)