• 使用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消息队列组件。
  • 相关阅读:
    intelliJ IDEA 全屏键盘手
    NoNodeAvailableException异常的解决
    Java HotSpot(TM) Client VM 与 server VM 的配置
    乐优商城问题1:新增品牌失败
    Linux安装nginx的环境要求
    NeoVIM安装使用
    ubuntu18.04 开机定时启动任务
    【Eclipse+PyDev】使用Python的IDE安装及配置详解
    ARM开发板挂载Ubuntu18.04主机的NFS共享文件夹
    Ubuntu18.04 解决umount: /mnt: device is busy
  • 原文地址:https://www.cnblogs.com/tuyile006/p/1100275.html
Copyright © 2020-2023  润新知