使用消息来处理多线程程序中的一些问题
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, "", "");
}
//自定义消息
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, "", "");
}
相关文章推荐
- 使用消息来处理多线程程序中的一些问题
- android程序中使用多线程的问题
- 利用多线程处理问题心得----处理并发程序
- 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。
- linux下多线程服务器处理程序问题解决
- C#一般处理程序 ashx.cs使用Session报错问题
- 使用C#和MSMQ开发消息处理程序
- 程序中一些和多线程有关的问题
- 使用Code Blocks编写C++程序遇到的一些问题
- Qt5:多线程处理与使用之三(Qt5的方法,再次写一个小程序熟悉下)
- Android多线程消息处理机制(四) Message、MessageQueue源码解析和Handler综合使用
- 多线程程序中使用fork的问题
- red5 使用自带的直播程序案例延时问题处理
- 使用欢迎使用事件处理程序向导的问题
- 本地消息中删除自身界面出错的问题和cocos2dx使用多线程的注意事项
- 使用desinger时遇到的一些问题的处理分享
- Linux下C程序使用多线程方式处理实例
- 在ashx一般处理程序文件中不能使用session和request的问题解决办法
- 一些Windows API导致的Crash以及使用问题总结(API的AV失败,可以用try catch捕捉后处理)
- Laravel使用消息队列需要注意的一些问题