- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 第十章(3)-异步调用中的异常与任务同步-学习笔记
同步编程中的异常处理由try和catch,同样异步编程时,异步调用的方法抛出一个异常时,CLR会捕捉他,当调用者线程(启动异步调用的线程)调用EndInvoke时,CLR会再次将异常抛出,这样调用者线程可捕获到她。如果BeginInvoke方法提供了一个回调方法,则CLR会在捕获异常后马上调用回调方法,并将异常传送给调用者线程。由此得出结论: 请在EndInvoke方法所在的代码处捕获异常(使用
2016-01-05 10:29:50 330
原创 第十章(2)-等待异步调用的完成-学习笔记
使用轮询: 我们对上一节的内容进行改进,让计算机每隔100ms向控制台输出一个小点(.)。运用了IAsyncResult接口的属性: using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Threading; namespace CalculateFol
2016-01-04 22:31:35 223
原创 第十章(1)-异步编程模式-学习笔记
完成各种各样的信息处理工作室人们开发应用软件最重要的目的之一。有些信息处理工作需要较长的时间来完成,比如在包含很多文件的硬盘上查找特定的文件,在这种情况下让应用程序停下来等待这一项工作完成是不现实的。应该让其在后台运作,这是应用程序还可以被用户操作,这需要异步编程的知识。 .NET的异步编程技术主要分为: 1,使用IAsyncResult的异步编程模式:又分为基于委托和世界是用基类库中的相关组
2016-01-04 16:32:00 215
原创 第九章(4)-事件访问器-学习笔记
在真实的项目中,有的对象有相当多的事件,例如一个窗体就有好多种事件。默认情况下,当声明事件时,编译器将内存分配给一个事件字段,一存储事件信息。如果类中有好多事件未使用,则他们会不必要的占用内存。 这种情况下,.NETFramework提供了EventHandlerList类来减少内存的占用。它可以被看作事件的集合,只有需要响应的事件才拥有方法调用列表,才会在EventHandlerList对象中
2016-01-03 22:21:40 372
原创 第九章(3)-开发拥有自定义事件的控件-学习笔记
在windows Form中,从头开始定义一个控件需要了解很多的底层技术细节,其工作量相当可观。所以,应尽量选择从现有的控件中派生,或者组合现有的控件为一个新的控件。 拥有计时功能的进度条控件: windows窗体控件库,制作一个进度条控件(利用现有的进度条和timer控件),生成后会自动添加到工具箱中: 自制控件代码 using System; using System.Collecti
2016-01-03 16:36:04 208
原创 第九章(2)-定义自己的事件-学习笔记
自定义事件的基本方法: 1,创建一个事件专用委托,此委托定义了事件响应方法的签名。 2,使用event关键字为对象定义一个时间字段。 3,在合适的地方激发事件。 下面的例程是,每次单机从窗体的按键主窗体的会记录单击次数。 从窗体代码: using System; using System.Collections.Generic; using System.ComponentModel;
2016-01-03 15:40:59 256
原创 第九章(1)-事件处理机制-学习笔记
激发与响应事件的载体都是对象。“事件源”激发,“响应者”响应事件,且提供“事件响应或处理方法”。一个事件可以没有响应者,后有多个响应者,当事件发生时计算机会检查有无响应者,有的话调用它的事件响应方法。
2016-01-02 17:14:12 276
原创 第八章(4)-掌握回调的编程技巧-学习笔记
通常情况下,我们创建对象之后会马上直接调用它的方法。然而,在有些情况下可能希望在某个场景出现后或某些条件满足后才调用此对象的方法。回调就可以解决这个“延迟调用方法”的问题。这个调用对象的方法称为“回调对象”。 1,基于接口的回调实现 先创建一个回调对象,然后在创建一个控制器对象,将回调对象需要被回调的方法告诉控制器对象。控制器对象负责检查某个场景是否出现或某个条件是否满足,满足则调用回调对象的
2015-12-31 16:37:08 208
原创 第八章(3)-委托的匿名方法与Lambda表达式-学习笔记
使用委托有以下几个步骤: 1,定义委托类型; 2,定义一个或多个符合委托类型要求的方法; 3,定义委托类型的变量,将签名相同的方法赋值给它; 4,将第二步定义的方法引用“挂接”到第三步定义的变量,以构建一个“委托调用列表”; 5,通过委托变量(新建立的变量)“间接”调用委托调用列表。 委托的匿名方法与Lambda表达式是为了简化上面的步骤: using System; usin
2015-12-31 12:50:13 292
原创 第八章(2)-使用泛型委托
举一个很简单的例子: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 { public delegate T OurDele
2015-12-30 21:55:52 177
原创 第八章(1)-神奇的委托-学习笔记
委托可以看成是一种数据类型,可以用于定义变量,但是只能将一个方法赋值给它。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _8._1 { public class
2015-12-30 15:56:19 290
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人