使用消息来处理多线程程序中的一些问题

 今年上半年做项目时遇到了一个问题,就是系统在运行的过程中,点击程序到显示画面,另外一个线程接收到信息需要将画面的局部进行更新。考虑到是跨线程的操作,直接处理的话就会出现错误。因此使用消息的方式来处理,问题得到了解决。现在将示例代码贴出来演示下:

 

//自定义消息

public const int USER = 0x500;

 public const int MYMESSAGE = USER + 1;

 

///重写窗体的消息处理函数DefWndProc,从中加入自己定义消息 MYMESSAGE 的检测的处理入口
        protected override void DefWndProc(ref Message m)
        {
            switch (m.Msg)
            {
                //接收自定义消息MYMESSAGE

                case MYMESSAGE:
                    {
                        lb1.Enabled = true;
                        lb1.Visible = true;
                    }
                    break;
                default:
                    base.DefWndProc(ref m);
                    break;
            }
        }

//供其它线程调用的方法

public void CallProcess()

{

//other process

//抛出消息进行跨线程的处理

 Win32API.PostMessage(this.Handle, MYMESSAGE, "", "");

}

转载于:https://www.cnblogs.com/kevinGao/archive/2011/09/20/2182520.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值