随笔分类 -  c#

摘要:本示例学习如何实现基于Task的异步操作进行取消流程,以及在任务真正运行前如何知道任务已经被取消。 我们学习如何在task中抛出不同情况的异常,以及如何获取这些异常信息。 阅读全文
posted @ 2017-12-06 16:39 DotNet菜园 阅读(1289) 评论(1) 推荐(3) 编辑
摘要:本示例,将上一篇(多线程编程学习笔记——线程池(三))中的(使用BackgroundWorker组件示例)转为任务。 本示例是学习如何基于事件的异步转换为TASK来运行。本示例的关键是使用TaskCompletionSource 阅读全文
posted @ 2017-12-01 13:59 DotNet菜园 阅读(1566) 评论(0) 推荐(1) 编辑
摘要:在net framework 4.0中微软又提供了一个新的异步操作的功能,叫做任务并行库(TPL)。任务并行库的核心是任务(task)。一个任务代表了一个异步操作,譔操作可以通过多种方式运行,可以使用或不使用独立的线程。 一个任务(Task)可以通过多种方式和其他任务组合起来使用。例如,可以同时开启多个任务,等待所有任务完成,再起一个任务进行操作。一个任务可以有多个其他任务组成,这些任务也可以依次拥有自己的子任务。 阅读全文
posted @ 2017-11-24 16:21 DotNet菜园 阅读(2693) 评论(4) 推荐(3) 编辑
摘要:本示例主要学习如果对线程池中的操作实现超时,并在线程池中正确等待。 线程池还有一个ThreadPool.RegisterWaitForSingleObject,这个方法允许我们将回调函数放入线程池中的队列中。当提供的等待事件处理器接收到信号或发生超时时,这个回调函数将被调用,这样就实现了为线程池中操作实现超时操作。 阅读全文
posted @ 2017-11-20 09:30 DotNet菜园 阅读(1627) 评论(2) 推荐(0) 编辑
摘要:如果我们要从线程池中取消某个线程的操作,应该如何实现呢?本示例使用CancellationTokenSource和CancellationToken两个类来实现在取消线程池中的操作。 阅读全文
posted @ 2017-11-13 09:45 DotNet菜园 阅读(1334) 评论(4) 推荐(0) 编辑
摘要:.NET中的线程池是受CLR管理的,TheadTool类有一个QueueUserWorkItem静态方法,这个静态方法接受一个委托,代表用户自定义的一个异步操作,在这个方法被调用之后,委托会进入到内部队列中,如果池中没有线程,则创建一个工作线程,把第一个委托放入工作线程。如果继续放入委托,则池创建新的工作线程,直到工作线程数量达到上限。这时再放入委托,则不会创建新的工作线程,而是在队列中等待,直到有空闲的工作线程。 阅读全文
posted @ 2017-11-08 12:05 DotNet菜园 阅读(2510) 评论(2) 推荐(3) 编辑
摘要:Barrier类用于组织多个线程及时在某个时刻会面,其提供一个回调函数,每次线程调用了SignalAndWait方法后该回调函数就会被执行。 阅读全文
posted @ 2017-11-03 15:29 DotNet菜园 阅读(1792) 评论(0) 推荐(0) 编辑
摘要:程序中,我们定义了两个AutoResetEvent实例。其中一个是从子线程往主线程发信号 ,另一个是主线程往子线程发信号。我们在构造AutoResetEvent时,传入了false,定义了这两个实例的初始状态unsignaled。这个状态下,任何线程调用这两个实例的WaitOne方法将会被阻塞,直到我们调用了Set方法。如果我们在构造的时候传入了true,则这两个实例的初始状态是singnaled,则线程调用WaitOne则会被立即处理。 阅读全文
posted @ 2017-11-01 15:08 DotNet菜园 阅读(1576) 评论(0) 推荐(4) 编辑
摘要:多线程使用共享变量,就会涉及到一个线程同步的问题。那如何解决呢? 1) 重构程序,移除多线程的共享变量,让一个线程只访问一个自有变量 2) 使用原子操作,一个操作只占用一个量子时间,一次完成,只有当当前操作完成之后,其他线程才能进行操作。这样可以避免使用独占锁,避免死锁。 3) 通过NET构架提供的Mutex、AutoRestEvent、CountDownEven、SpinWait等类,来进行线程间的同步。 阅读全文
posted @ 2017-10-27 16:21 DotNet菜园 阅读(2803) 评论(2) 推荐(0) 编辑
摘要:多线程编程学习笔记-基础 阅读全文
posted @ 2017-10-25 14:15 DotNet菜园 阅读(1680) 评论(1) 推荐(3) 编辑
摘要:多线程编程学习笔记 阅读全文
posted @ 2017-10-20 13:35 DotNet菜园 阅读(2115) 评论(2) 推荐(2) 编辑
摘要:多线程编程学习笔记 阅读全文
posted @ 2017-10-19 16:04 DotNet菜园 阅读(3572) 评论(5) 推荐(1) 编辑
摘要:最近在学习百度的开源上传组件WebUploader,上一篇文章,学习了批量文件上传,今天学习一下批量图片上传,实际上与文件上传很类似,只是添加了图片显示功能,这个功能WebUploader组件中已经提供了。 阅读全文
posted @ 2017-09-07 16:41 DotNet菜园 阅读(19343) 评论(4) 推荐(1) 编辑
摘要:最近在学习百度的开源上传组件WebUploader,写了一些示例以记录。WebUploader的缺点是没有一个比较好的现成的界面,这个界面需要自己去实现。自由度高了一些。使用WebUploader为核心进行文件的批量上传的解决方案。 阅读全文
posted @ 2017-08-31 15:29 DotNet菜园 阅读(31783) 评论(14) 推荐(3) 编辑
摘要:新的控件DataGridView中很多的“Cell”事件的先后触发顺序。 阅读全文
posted @ 2013-12-22 19:00 DotNet菜园 阅读(19231) 评论(3) 推荐(5) 编辑
摘要:将 HttpClientHandler 类与 System.Net.Http 命名空间中的 HttpClient 类结合使用,以向 Web 服务发送 GET 请求并检索响应。   System.Net.Http 命名空间中的类可为现代 HTTP 应用提供编程接口。System.Net.Http 命名空间和相关的 System.Net.Http.Headers 命名空间提供的 HTTP 客户端组件,允许用户通过 HTTP 使用现代的 Web Service。 阅读全文
posted @ 2013-12-07 14:41 DotNet菜园 阅读(17257) 评论(0) 推荐(4) 编辑
摘要:使用 System.Net.Http 命名空间中的 HttpClient 类可以向 WebService发送 POST与GET 请求并检索响应数据。   System.Net.Http 命名空间中的类可为现代 HTTP 应用提供编程接口。System.Net.Http 命名空间和相关的 System.Net.Http.Headers 命名空间提供的 HTTP 客户端组件,允许用户通过 HTTP 使用现代的 WebService。 阅读全文
posted @ 2013-11-27 21:10 DotNet菜园 阅读(58114) 评论(1) 推荐(3) 编辑
摘要:System.Net.Http 是微软推出的最新的 HTTP 应用程序的编程接口, 微软称之为“现代化的 HTTP 编程接口”, 主要提供如下内容: 1. 用户通过 HTTP 使用现代化的 Web Service 的客户端组件; 2. 能够同时在客户端与服务端同时使用的 HTTP 组件(比如处理 HTTP 标头和消息), 为客户端和服务端提供一致的编程模型。 阅读全文
posted @ 2013-11-23 17:19 DotNet菜园 阅读(19405) 评论(1) 推荐(4) 编辑
摘要:由于swfupload对于IE9的兼容性的不太好,以及随着HTML5与IE9、IE10的逐渐普及,加上鉴于swfupload已经很久没有进行过更新等等原因,要对批量文件上传的方式要进行更新,使用新的解决方案。于是在经过一阵寻找之后,决定使用plupload做为核心重新写了一个批量文件上传解决方案。Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度、图像自动缩略和上传分块,同时上传多个文件。Plupload 的上传文件的引擎使用Flash,Silverlight,HTML5,Gears,BrowserPlus或正常的FileUpload。 阅读全文
posted @ 2013-01-30 20:48 DotNet菜园 阅读(64421) 评论(24) 推荐(15) 编辑
摘要:正则表达式与模版解析的性能比较 阅读全文
posted @ 2012-01-05 22:02 DotNet菜园 阅读(1393) 评论(0) 推荐(0) 编辑