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

//自定义消息

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

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

  1. 多线程程序中操作的原子性

    0. 背景 原子操作就是不可再分的操作.在多线程程序中原子操作是一个非常重要的概念,它常常用来实现一些同步机制,同时也是一些常见的多线程Bug的源头. 本文主要讨论了三个问题: 1. 多线程程序中对变 ...

  2. 多线程程序中操作的原子性--转帖

    多线程程序中操作的原子性 0. 背景 原子操作就是不可再分的操作.在多线程程序中原子操作是一个非常重要的概念,它常常用来实现一些同步机制,同时也是一些常见的多线程Bug的源头.本文主要讨论了三个问题: ...

  3. [译]预留位置队列PRQueue:多线程程序中消息输入队列和消息输出队列保持同序...

    译自: http://accu.org/var/uploads/journals/overload101.pdf 在多线程应用程序中,要求消息输入队列和消息输出队列顺序要求保持一致,而忽略多线程并发处 ...

  4. 如何实现消息功能_小程序中如何实现即时通信聊天功能

    微信小程序是现在应用比较广的流量平台之一,当流量越来越多时,就需要在小程序中接入即时通信聊天功能来实现更好的流量变现转化,那么小程序中如何接入实现即时通信聊天功能呢? 什么是即时通信聊天功能即时通信聊 ...

  5. c++语言中如何写入文件,C++:在多线程程序中写入文件

    你的代码很浪费,不遵循C++习惯用法. 从结尾开始:是的,write是线程安全的,因为win32 CRITICAL_SECTION可以保护它免受并发修改. 虽然: 为什么打开,每次关闭流?这是非常浪费 ...

  6. 在多线程应用程序中使用循环缓冲区高效地进行日志记录

    在多线程应用程序中使用循环缓冲区高效地进行日志记录 在关键的计算机应用程序的生存期中,日志记录是一件非常重要的活动,特别是当故障的症状并不十分明显时.日志记录提供了故障前应用程序状态的详细信息,如变量 ...

  7. Linux下多线程编程中信号量介绍及简单使用

    在Linux中有两种方法用于处理线程同步:信号量和互斥量. 线程的信号量是一种特殊的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作.如果一个程序中有多个线程试图改变一个信号量的值,系统将保 ...

  8. volatile: 多线程程序员最好的朋友

    volatile关键字用于阻止编译器进行一些在异步事件代码中进行的可能导致错误的优化. ByAndrei Alexandrescu February 01,2001 URL:http://drdobb ...

  9. Linux下几款C++程序中的内存泄露检查工具

    Linux下编写C或者C++程序,有很多工具,但是主要编译器仍然是gcc和g++.最近用到STL中的List编程,为了检测写的代码是否会发现内存泄露,了解了一下相关的知识. 所有使用动态内存分配(dy ...

最新文章

  1. SQL Server 2008, 2008 R2, 2012 and 2014 完全支持TLS1.2加密传输
  2. 经典C语言程序100例之八八
  3. Python之将彩色图片批量转化为黑白图片
  4. 对windows更多的理解
  5. UI实用素材|登录和个人资料界面模板
  6. python2使用pandas处理excel数据
  7. 矩阵手册(四)—— 增广矩阵
  8. 强化学习实战(二)ubuntu16.04安装Anaconda、Gym和 Universe
  9. 十大硬盘数据恢复软件
  10. java实现二维码的生成与解析
  11. 海思Hi3798MV200机顶盒芯片规格书-基本信息
  12. dhtmlxGantt standard vs dhtmlxGantt pro
  13. Golang学习资源整理
  14. 控制面板Plesk, cPanel, DirectAdmin, whmcs,WDCP, AMH比较
  15. android 夏令时,android 时间处理(夏令时)
  16. 一张图了解致远A6人事管理
  17. java基础继承合集
  18. 计算机内部数据的传输 进制,计算机内部数据加工处理和传送的形式是什么
  19. 小米5S TWRP刷面具、EdXposed
  20. 苹果内购之不能超过99.99美金被拒绝

热门文章

  1. SAP ECM的相关设定(ECN)
  2. SAP PM 模块主要配置点
  3. 2020上半年收集到的优质AI文章 – 机器学习和深度学习
  4. TensorFlow2020:如何使用Tensorflow.js执行计算机视觉应用程序?
  5. 特定场景下Yolo改进算法:Poly-Yolo
  6. 1.5亿美元!英国AI芯片创企今宣布获新融资,估值近20亿美元
  7. 业内公认的AI发展最大挑战,有哪些技术突破机会?
  8. 机器学习:循环神经网络知识要点
  9. SAP MM 物料主数据里某字段看不到就是屏幕格式设置导致的?
  10. 干货丨8种用Python实现线性回归的方法