摘要: 浅析C#中异步和多线程的区别http://developer.51cto.com 2009-08-21 11:31 ruyi 博客园 我要评论(0)异步和多线程的区别是什么?异步和多线程各自的特点是什么呢?那么本文就向你介绍异步和多线程的区别以及异步和多线程的区别的实例。C#中异步和多线程的区别是什么呢?异步和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为异步和多线程是等同的概念。但是,异步和多线程还是有一些区别的。而这些区别造成了使用异步和多线程的时机的区别。异步和多线程的区别之异步操作的本质所有的程序最终都会由计算机硬件来执行,所以为了更好的理解 阅读全文
posted @ 2011-07-23 11:07 finered 阅读(664) 评论(1) 推荐(0) 编辑
摘要: 在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法。第一种:使用ParameterizedThreadStart。调用 System.Threading.Thread.Start(System.Object) 重载方法时将包含数据的对象传递给线程。使用 ParameterizedThreadStart 委托不是传递数据的类型安全的方法,因为 System.Threading.Thread.Start(System.Object) 方法重载接受任何对象。这种方法不推荐使用,故在此不做详细介绍,具体用法参见:http://msdn2.microsoft.com/z 阅读全文
posted @ 2011-07-23 11:04 finered 阅读(529) 评论(0) 推荐(0) 编辑
摘要: 引言1.理解多线程2. 线程异步与线程同步3.创建多线程应用程序3.1通过System.Threading命名空间的类构建3.1.1异步调用线程3.1.2并发问题3.1.3线程同步3.2通过委托构建多线程应用程序3.2.1线程异步3.2.2线程同步3.3BackgroundWorker组件4.总结引言 随着双核、四核等多核处理器的推广,多核处理器或超线程单核处理器的计算机已很常见,基于多核处理的编程技术也开始受到程序员们普遍关注。这其中一个重要的方面就是构建多线程应用程序(因为不使用多线程的话,开发人员就不能充分发挥多核计算机的强大性能)。本文针对的是构建基于单核计算机的多线程应用程序,目的在 阅读全文
posted @ 2011-07-23 10:59 finered 阅读(22633) 评论(1) 推荐(7) 编辑
摘要: net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,推荐的解决方法是采用代理,用代理方法来间接操作不是同一线程创建的控件。 第二种方法是禁止编译器对跨线程访问作检查,可以实现访问,但是出不出错不敢保证Control.CheckForIllegalCrossThreadCalls = false;最近我在做一个项目,遇到了跨线程要去访问页面控件.但是总是提示出错,不能在其它线程中修改创建控件的线程的控件的值,后来采用了匿名代理,结果很轻松地解决了.解决过程如下:首先在窗体上,创建一个listbox,lable.using System;using System.Collections 阅读全文
posted @ 2011-07-23 00:38 finered 阅读(3836) 评论(1) 推荐(1) 编辑
摘要: Lambda表达式的本质是“匿名方法”,也即是当编译我们的程序代码时,“编译器”会自动帮我们将“Lambda表达式”转换为“匿名方法”,如下例:string[] names = { "agen", "balen", "coure", "apple" };string[] findNameA = Array.FindAll<string>(names, delegate(string v){return v.StartsWith("a");});string[] findNameB = 阅读全文
posted @ 2011-07-23 00:35 finered 阅读(410) 评论(0) 推荐(2) 编辑
摘要: 摘自百度: 匿名委托的叫法并不准确,准确的应该叫做匿名方法。 在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法。C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。 要将代码块传递为委托参数,创建匿名方法则是唯一的方法。 通过使用匿名方法,由于您不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。 示例: 不使用匿名方法: static void Main(string[] args) { Thread thread = new Thread(new ThreadStart(Run)); /. 阅读全文
posted @ 2011-07-23 00:29 finered 阅读(294) 评论(0) 推荐(0) 编辑