在C# WinForm中,可以使用消息队列来实现发送队列和接收队列的功能。以下是一个简单的示例:

  1. 创建发送队列:
using System.Messaging;

public class Sender
{
    private MessageQueue queue;

    public Sender()
    {
        // 创建消息队列
        if (!MessageQueue.Exists(@".\Private$\MyQueue"))
        {
            queue = MessageQueue.Create(@".\Private$\MyQueue");
        }
        else
        {
            queue = new MessageQueue(@".\Private$\MyQueue");
        }
    }

    public void SendMessage(string message)
    {
        // 发送消息到队列
        queue.Send(message);
    }
}
  1. 创建接收队列:
using System.Messaging;

public class Receiver
{
    private MessageQueue queue;

    public Receiver()
    {
        // 打开消息队列
        if (!MessageQueue.Exists(@".\Private$\MyQueue"))
        {
            queue = MessageQueue.Create(@".\Private$\MyQueue");
        }
        else
        {
            queue = new MessageQueue(@".\Private$\MyQueue");
        }
        
        // 设置消息队列的格式化器
        queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
        
        // 设置接收队列的异步事件处理程序
        queue.ReceiveCompleted += new ReceiveCompletedEventHandler(ReceiveCompletedCallback);
        
        // 开始异步接收消息
        queue.BeginReceive();
    }

    private void ReceiveCompletedCallback(object sender, ReceiveCompletedEventArgs e)
    {
        // 处理接收到的消息
        Message message = queue.EndReceive(e.AsyncResult);
        string content = (string)message.Body;
        Console.WriteLine("Received message: " + content);
        
        // 继续异步接收消息
        queue.BeginReceive();
    }
}
  1. 在WinForm中使用发送队列和接收队列:
public partial class MainForm : Form
{
    private Sender sender;
    private Receiver receiver;

    public MainForm()
    {
        InitializeComponent();

        sender = new Sender();
        receiver = new Receiver();
    }

    private void btnSend_Click(object sender, EventArgs e)
    {
        string message = txtMessage.Text;
        sender.SendMessage(message);
    }
}

在上述示例中,发送队列和接收队列都使用了消息队列类MessageQueue。发送队列使用queue.Send方法发送消息到队列中,接收队列使用queue.ReceiveCompleted事件异步接收消息,并通过回调函数ReceiveCompletedCallback处理接收到的消息。在WinForm中,通过点击按钮触发发送操作

C#winform 发送队列跟接受队列

原文地址: http://www.cveoy.top/t/topic/iDNc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录