您的位置:首页 > 其它

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

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

 

//自定义消息

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, "", "");

}

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 user