随笔分类 - Advanced .Net
摘要:上一篇中主要介绍了基于类型IAsyncResult的异步操作,这里将简单的介绍一下基于事件的异步编程模式,在.net中可以使用类BackgroundWorker来实现简单的基于事件的异步编程模式。该类型定义在System.ComponentModel命名空间中,定义如下:publicclassBackgroundWorker:Component{//当RunWorkerAsync方法调用时,将执行DoWrokpubliceventDoWorkEventHandlerDoWork;//当ReportProgress调用时将触发该事件publiceventProgressChangedEventH
阅读全文
摘要:1. CLR异步编程模型2. IO限制性异步操作中异常处理3. 最佳实践<1>. CLR异步编程模型.net中基本上包含两种异步编程模式:使用IAsyncResult对象,或者是使用事件的异步操作.这里主要是关于使用IAsyncResult的异步操作. 在。net中存在的大量已有类型能够支持异步编程,一般会提供BeginOperation和EndOperation的匹配方法,在BeginOperation中提供回调函数,在异步操作完成之后被调用,同时包含一个state参数,该参数是一个用户自定义参数 ,此对象用来向异步异步操作完成之后调用的方法传递的应用程序的特定信息状态,在io读
阅读全文
摘要:1. 实现非ui线程更新ui线程的代码2. 编码中出现的一个错误及探究<1>. 实现非ui线程更新ui线程之前的基本做法是使用Invoke实现,这里采用的是 .net 4.0中的Task来实现,代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Thr
阅读全文
摘要:1. CLR线程池简介 1.1CLR为什么支持线程池 1.2线程池ThreadPool管理线程2. 线程执行上下文 2.1线程执行上下文简介 2.2一个简单示例3.线程池常见应用情景示例 3.1 将一个线程添加至线程池中(向线程传递参数) 3.2 协作式取消4. Task对象5. Task常见编程情景 5.1创建Task,并启动该Task 5.2获取Task任务的结果 5.3Task任务异常处理 5.4取消Task 5.5启动新Task6. 定时器Timer<4>. Task对象通过上一篇的介绍,我们知道通过ThreadPool的QueueUserWorkItem方法能够很简单的将
阅读全文
摘要:1. CLR线程池简介 1.1CLR为什么支持线程池 1.2线程池ThreadPool管理线程2. 线程执行上下文 2.1线程执行上下文简介 2.2一个简单示例3.线程池常见应用情景示例 3.1 将一个线程添加至线程池中(向线程传递参数) 3.2 协作式取消4. Task简介5. Task编程基础6. 定时器Timer<1>. CLR线程池简介1.1 CLR为什么支持线程池?上一篇中讲到如果在一个应用程序中启动了多个线程的话,显然是会影响到程序的运行效率,一种很直观的想法是:如果一个线程完成了任务,我们并不在内存中销毁这个线程的实例,而是将这个线程进入空闲状态,如果又来了一个请求,
阅读全文
摘要:1. windows为什么支持线程?2. 线程开销 3. 线程调度和线程优先级4. 前台线程和后台线程5. 线程的Hello World程序<1>. windows为什么支持线程?早期的windows系统是没有”线程“概念的,整个系统只能运行着一个执行线程,这可能阻塞其他任务的执行,带来极其差的用户体验,基于上述及其操作系统的健壮性,可靠性等,windows引入了“线程”的概念。 线程可以看作是对CPU的虚拟。ndows为什么支持线程<2>. 线程开销虽然多线程技术能够在一定程度上增加用户 交互体验,但是操作系统创建线程并不是没有代价的,具体来讲:2.1 windows
阅读全文
摘要:thread生命周期简介在msdn上http://msdn.microsoft.com/en-us/library/system.threading.threadstate.aspx对于线程的生命周期总结如下:StateDescriptionRunningThe thread has been started, it is not blocked, and there is no pending ThreadAbortException.StopRequestedThe thread is being requested to stop. This is for internal use on
阅读全文
摘要:1.什么是process和thread?2.什么是appdomain?3.什么是thread local storage及相关操作?4.在.net framework中如何启动一个进程?5.callbacks回调6.参考资料和实验代码下载1.了解.net framework下的process和threadwindows下通过启动任务管理器能够看到当前计算中正在运行的application应用程序的列表,如下图所示:下图中显示了当前计算机中所有的进程信息:上面的图片展示了下面一个事实,application中不止包含一个process,一个process可以包含几个thread,同时一个proc
阅读全文
摘要:P/Invoke1.P/Invoke是什么?有何作用?2.简单的使用P/Invoke的demo1.P/Invoke是什么?有何作用?P/Invoke使得C#程序调用非托管的成为可能,例如可以使用P/Invoke来调用win32 api。2.简单的使用P/Invoke的demo2.1 使用P/Invoke直接调用win32 apipublicclassProgram{///<summary>///importkernel32.dll///</summary>///<paramname="source"></param>///&l
阅读全文