
C#|MFC专题之多线程与委托
思月行云
吾求吾失且不暇,何暇论人哉?!
君子性非异也,善假于物也。
展开
-
C#中跨线程操作控件
From:http://tech.ddvip.com/2008-12/122906068099474.html一、前面的话 对于一些耗时型操作(如文件下载),让主线程去处理不是明智的选择,虽然这样做会使得程序开发起来很简单。因为WinForm程序设计的准则之一就是Responsive,即让用户觉得程序一直在工作,而不是感觉它在罢工(呵呵,事实上,程序不会罢工,只是你没给他表现得机会,转载 2008-12-27 18:14:00 · 2620 阅读 · 0 评论 -
.net中三种Timer使用总结
<br />最近正好做一个WEB中定期执行的程序,而.NET中有3个不同的定时器。所以正好研究研究。这3个定时器分别是: <br /><br />//1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。 <br />System.Windows.Forms.Timer <br /><br />// 2.提供以指定的时间间隔执行方法的机制。无法继承此类。 <br />System.Threading.Timer <br /><br />//3.转载 2010-09-09 12:31:00 · 2596 阅读 · 0 评论 -
C#多线程学习(六) 互斥对象
如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,线程使用Mutex.WaitOne()方法等待Mutex对象被释放,如果它转载 2010-04-06 08:52:00 · 1143 阅读 · 0 评论 -
C#多线程学习(五) 多线程的自动管理(定时器)
Timer类:设置一个定时器,定时执行用户指定的函数。 定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。// 第一个参数:指定了TimerCallback 委托,表示要执行的方法;// 第二个参数:一个包含回调方法要使用的信息的对象,或者为空引用;// 第三个参数:延迟时间——计时开始的时刻距现在的时间,单位是毫秒,指定为“0”表示立即启动计时器;// 第四转载 2010-03-26 08:24:00 · 987 阅读 · 0 评论 -
C#多线程学习(四) 多线程的自动管理(线程池)
在多线程的程序中,经常会出现两种情况:一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应 这一般使用ThreadPool(线程池)来解决;另一种情况:线程平时都处于休眠状态,只是周期性地被唤醒 这一般使用Timer(定时器)来解决;ThreadPool类提供一个由系统转载 2010-03-26 08:22:00 · 804 阅读 · 0 评论 -
C#多线程学习(三) 生产者和消费者 2
下面定义生产者类 CellProd 和消费者类 CellCons ,它们都只有一个方法ThreadRun(),以便在Main()函数中提供给线程的ThreadStart代理对象,作为线程的入口。public class CellProd{ Cell cell; // 被操作的Cell对象 int quantity = 1; // 生产者生产次数,初始化为1 p转载 2010-03-26 08:21:00 · 996 阅读 · 0 评论 -
C#多线程学习(三) 生产者和消费者 1——解决线程间冲突的关键
前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C#中,关键字lock定义如下:转载 2010-03-26 08:18:00 · 2706 阅读 · 0 评论 -
C#带参数线程的操作
线程操作主要用到Thread类,他是定义在System.Threading.dll下。使用时需要添加这一个引用。该类提供给我们四个重载的构造函数(以下引自msdn)。 Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。 Thread (ThreadSta转载 2010-03-24 14:57:00 · 2506 阅读 · 0 评论 -
C#多线程学习(二) 如何操纵一个线程
下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事)在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。 打开你的VS.n转载 2010-03-25 13:27:00 · 1064 阅读 · 0 评论 -
C#多线程学习(一) 多线程的相关概念
文章出处:http://www.cnblogs.com/xugang/archive/2008/04/06/1138856.html什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执转载 2010-03-25 13:25:00 · 953 阅读 · 0 评论 -
新手老问题---------跨线程的控件访问
新手经常会遇到这样的问题: a线程去访问b线程的控件,编译器报错(.net1.0编译时好像不会报,.net2.0是肯定会的).解决方法有3种:1, 不安全的方法: 将 Control.CheckForIllegalCrossThreadC转载 2008-12-27 19:23:00 · 1254 阅读 · 0 评论 -
VC模拟系统线程池
原文版权归博客园 杨粼波所有,如有转载,请按如下方式标明原文作者及出处,以示尊重!作者:杨粼波原文:http://www.cppblog.com/tx7do/archive/2006/04/14/5576.html 这两天在做关于网络蜘蛛的程序,希望可以通过线程池来提高程序的性能,网上搜索了一下,看到这方面的东西还不少,跟大家分享一下!~有许多应用程序创建的线程花费了大量时间在睡眠状态来等待事件的发生。还有一些线程进入睡眠状态后定期被唤醒以轮询工作方式来改变或者更新状态信息。线程池可以让你更有效地转载 2011-02-15 09:04:00 · 993 阅读 · 0 评论