- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 .net中async/await异步编程
C#5.0中引入了构建异步方法的新特性---async/await。本文根据自己的理解讲述异步方法三种返回方式和取消异步操作的示例。在此之前先说说异步方法的语法特点:方法名称一般是Async 结尾。可以包含一个或者多个await表达式。异步方法的参数不能使用ref和out参数。方法头包含async关键字,并且在返回类型之前。除了方法之外, Lambda 表达式和匿名函数也可以作为异步对象。先来看看...
2018-04-03 19:20:11 10523
原创 C#中的is和as运算符
is运算符有些类型之间的转换并不是能够转换成功,强制的转换反而会抛出一些异常,那么,可以使用is运算符来检查转换是否可以转换成功。is的语法如下:variable is NewType如果variable可以通过引用转换、装箱转换和拆箱转换的方式转换为NewType,那么运算符返回true。举例如下: class Animal { public string na...
2018-04-07 22:10:42 626
原创 .net中计时器Timer类
计时器可以一种定时的方式异步的重复运行,这里简单的讲解举例一下System.Threading命名空间中的Timer类。参考文档:https://msdn.microsoft.com/zh-cn/library/system.threading.timer(v=vs.110).aspx计时器在固定的时间调用回调方法,回调方法必须是System.Threading.TimerCallback委托形式...
2018-04-06 12:50:36 1538
原创 .net利用委托BeginInvoke和EndInvoke实现异步编程
最近看书,看到了可以利用学过的委托知识实现异步编程,这里做一个简单的说明示例。如果委托对象在调用列表中只有一个方法(引用方法),他就可有异步执行这个方法。委托类有两个方法,BeginInvoke和EndInvoke。当我们调用委托的BeginInvoke方法时,它开始在一个独立线程上执行引用方法。并且立即返回到原始线程。原始线程可以继续。而引用方法会在线程池中的线程中并行执行。当程序希望获取已完成...
2018-04-06 04:01:04 1886
原创 .NET中的简单的并行循环Parallel.For和Parallel.ForEach
这里简单的介绍一下.net中的任务并行库。简单的并行循环Parallel.For和Parallel.ForEach。我们常见的for和foreach循环分别对应并行循环Parallel.For和Parallel.ForEach。参考文档:https://msdn.microsoft.com/zh-cn/library/system.threading.tasks.parallel_methods(...
2018-04-05 22:01:27 2944
原创 .net通过BackgroundWorker类实现多线程编程
前面学习了async/await特性来异步处理任务,BackgroundWorker可以在需要另建一个线程,并且后台持续的完成某项工作,而且可以和主线程进行交互通信。参考文档:https://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker.aspx代码示例: class Program {...
2018-04-05 19:56:54 293
原创 .net中Task.Yield和Task.Delay说明
书上看到一个Task.Yield例子,Task.Yield方法创建一个立即返回的awaitable。等待一个Yield可以让异步方法在执行后续的部分时返回到调用方法。可以理解为离开当前的消息队列,回到队列末尾,让处理器有时间处理其他任务。Yield方法在GUI编程中非常的有用,可以中断大量的工作,让其他任务使用处理器。看下面的代码:static void Main(string[] args){...
2018-04-05 18:24:58 3667
原创 .net中Task.WhenAll和WhenAny异步的等待Task完成
前面讲了Task.WaitAll和WaitAny同步的等待Task完成,在异步方法中,我们希望用await表达式等待Task,这里使用Task.WhenAll和WhenAny方法来实现等待一个或者多个任务完成。修改Main函数,添加一个异步方法,代码如下:static void Main(string[] args){ string[] urls = { "https://stackov...
2018-04-05 17:05:52 10656 1
原创 .net中Task.WaitAll和WaitAny同步的等待Task完成
前面讲了《.net中async/await异步编程》,如果方法中使用了多个异步方法,该如何同步的等待Task完成?Task.WaitAll 等待提供的所有 System.Threading.Tasks.Task 对象完成执行过程。DownLoadTest dwtest = new DownLoadTest();CancellationTokenSource cts = new Cancellat...
2018-04-05 16:29:27 9793
原创 asp.net mvc 中使用async/await异步编程
已经介绍过async/await异步编程,但是按照一般的异步编程的步骤,在asp.net mvc页面中使用异步编程好像会经常报一个错误,错误信息如下:现在无法开始异步操作。异步操作只能在异步处理程序或模块中开始,或在页生存期中的特定事件过程中开始。如果此异常在执行 Page 时发生,请确保 Page 标记为 <%@ Page Async="true" %>。此异常也可能表明试图调用“异...
2018-04-04 16:46:12 10205
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人