C#winform 发送队列跟接受队列
在C# WinForm中,可以使用消息队列来实现发送队列和接收队列的功能。以下是一个简单的示例:
- 创建发送队列:
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);
}
}
- 创建接收队列:
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();
}
}
- 在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中,通过点击按钮触发发送操作
原文地址: http://www.cveoy.top/t/topic/iDNc 著作权归作者所有。请勿转载和采集!