C# 多线程
lzh1160
这个作者很懒,什么都没留下…
展开
-
c# 多线程 编程
一.多线程的概念 Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程。什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即转载 2010-04-01 15:30:00 · 247 阅读 · 0 评论 -
使用异步方式调用同步方法
<br /><br />(查询BeginInvoke 2005MSDN 里相关资料,我复制在这里)<br /> <br />.NET Framework 允许您异步调用任何方法。为此,应定义与您要调用的方法具有相同签名的委托;公共语言运行库会自动使用适当的签名为该委托定义 BeginInvoke 和 EndInvoke 方法。<br />BeginInvoke 方法可启动异步调用。它与您需要异步执行的方法具有相同的参数,另外它还有两个可选参数。第一个参数是一个 AsyncCallback 委托,该委转载 2011-03-03 11:49:00 · 485 阅读 · 0 评论 -
Invoke 和 BeginInvoke 的区别
<br /><br />讨论环境:C# 、.net、VS2005<br />.net默认所有的可视窗体在主线程内维护,如果某工作线程(主线程之外)想实现对窗体控件的操作,缺省情况下是不允许直接操作的,而要通过 Invoke 方法将其封送到主线程去完成。在Control 类内提供了 Invoke 和 BeginInvoke 两个方法实现该功能,MSDN 帮助中提到,它们的唯一区别是 BeginInvoke 多了“异步执行”四个字。(两方法的具体帮助请自行查看MSDN,这里不多罗嗦了)。<br />“异步执行”转载 2011-03-03 11:43:00 · 519 阅读 · 0 评论 -
多线程的参数传递
<br />我们在写Remoting程序或者其他的一些应用程序的时候难免要和线程打交道,.Net使我们很容易就可以创建一个线程,但是它提供的创建线程和启动线程的方法没有明显的提供参数,假如我们要用线程来启动类里面一个带参数的方法该怎么办?下面就简单的介绍如何使用.NET提供的丰富的框架来实现这个功能。为了可以生动详细的介绍整个过程,我建立下面的一个.NET类,它也是要用线程启动的方法的载体。类如下所示: <br /><br />using System;<br />namespace WindowsAppl转载 2011-03-01 17:11:00 · 649 阅读 · 0 评论 -
线程间数据通讯与更新
<br /><br /><br /><br />先看以下代码:<br />using System;<br />using System.Text;<br />using System.Windows.Forms;<br />using System.Threading;<br />namespace 线程间通讯<br />{<br /> public partial class Form1 : Form<br /> {<br /> public Form1()<br />转载 2011-02-28 17:18:00 · 606 阅读 · 0 评论 -
C# string 字符串 "暂留" 的意思(还看不明)
CLR系列有些时间没更新了,主要时由于最近一个项目太忙。所以没能更新。以后会继续。其他话就不说了,我们来看看一段代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 class TestWorker 2 { 3 p转载 2010-04-17 14:49:00 · 933 阅读 · 0 评论 -
C#语言 线程同步(1)
0 概述上一章我们了解了多个线程可以“同时”运行代码(我们称为“异步运行”),这一章我们来研究为什么异步运行的线程需要同步?所谓同步,就是给多个线程规定一个执行的顺序(或称为时序),要求某个线程先执行完一段代码后,另一个线程才能开始执行。第一种情况:多个线程访问同一个变量:一个线程写,其它线程读:这种情况不存在同步问题,因为只有一个线程在改变内存中的变量,内存中的变量在任意时刻都有转载 2010-04-17 09:49:00 · 424 阅读 · 0 评论 -
C#语言 线程基础(2)
2、优雅的退出线程上一节我们讲了如何建立和启动线程,那么线程应该如何退出呢?按照要求,无论使用何种编程语言,线程都必须自然退出,而不应该被迫退出。所谓自然退出,就是线程的入口方法执行完毕退出(包括使用异常跳出方法、使用return跳出方法或令方法运行完毕),线程入口方法执行完毕,标志着线程退出,此时.net Framework会继续执行一段代码,回收线程占用的资源。实际上,操作系统提供转载 2010-04-17 09:48:00 · 338 阅读 · 0 评论 -
归纳一下:C#线程同步的几种方法
我们在编程的时候,有时会使用多线程来解决问题,比如你的程序需要在后台处理一大堆数据,但还要使用户界面处于可操作状态;或者你的程序需要访问一些外部资源如数据库或网络文件等。这些情况你都可以创建一个子线程去处理,然而,多线程不可避免地会带来一个问题,就是线程同步的问题。如果这个问题处理不好,我们就会得到一些非预期的结果。 在网上也看过一些关于线程同步的文章,其实线程同步有好几种方法,下面我就简单转载 2010-04-04 14:25:00 · 306 阅读 · 0 评论 -
C#语言 线程(一)线程基础(1)
0 概述Windows系列操作系统是建立在保护模式之上的32位/64位多任务操作系统,其特点是:时分抢先式多任务操作系统。我们来详细探讨一下其中的定义。在操作系统中,进程和线程是和我们运行程序紧密相关的两个概念,其中:进程是资源分配单元,用于执行一段程序前为其分配足够的资源; 线程是程序执行单元,线程用于执行程序。 简单的叙述一下Windows操作系统是如何来启动一个应转载 2010-04-17 09:34:00 · 445 阅读 · 0 评论 -
AutoResetEvent+与+ManualResetEvent区别
在C#多线程编程中,这两个类几乎是不可或缺的,他们的用法/声明都很类似,那么区别在哪里了? Set方法将信号置为发送状态 Reset方法将信号置为不发送状态 WaitOne等待信号的发送 其实,从名字就可以看出一点端倪 ,一个手动,一个自动,这个手动和自动实际指的是在Res转载 2011-02-28 17:32:00 · 504 阅读 · 0 评论