带有消息机制的线程 - CustomMessageQueue(c#)

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;

namespace  CustomMessageQueue_CSharp
{
    
public partial class Form1 : Form
    
{
        
public Form1()
        
{
            InitializeComponent();
        }


        
private CustomMessageQueue myMsgQueue;
        
private bool CustomMessageProc(ref CustomMessage m)
        
{
            
if (m.Message == 1)
            
{
                MessageBox.Show(
"我拦截到 id = 1 的消息了。并且,就到此为止了。呵呵");
                
return true;
            }

            
else
            
{
                MessageBox.Show(m.Message.ToString());
            }

            
return false;
        }


        
private void Button1_Click(object sender, EventArgs e)
        
{
            CustomMessage msg 
= new CustomMessage();
            msg.Message 
= 1;
            msg.param 
= "我的自定义消息 ID:1";
            CustomMessageQueue.PostMessage(
ref myMsgQueue, ref msg);
        }


        
private void Button2_Click(object sender, EventArgs e)
        
{
            CustomMessage msg 
= new CustomMessage();
            msg.Message 
= 2;
            myMsgQueue.PostMessage(
ref msg);
        }


        
private void Form1_Load(object sender, EventArgs e)
        
{
            myMsgQueue 
= new CustomMessageQueue();
            myMsgQueue.StartThread();
            myMsgQueue.PerTranslateMessage 
= new CustomMessageQueue.PerTranslateMessageHandler(CustomMessageProc);
        }


        
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        
{
            myMsgQueue.PostQuitMessage();
        }

    }


    
自定义消息队列线程
}

 

上面是完整的一个程序,包括调用和实现。如果自己使用,可以创建个新的c#工程,添加2个按钮,复制代码即可。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值