随笔分类 -  多线程

摘要:一、引言 在前面的几篇文章中,我们主要讲解了TPL,主要是Task,然后还介绍了如何在ASP.NET MVC中使用异步方法,在这篇文章中,我们结合一个小的实例,使用ASP.NET MVC+EF,实现异步的增删改查。 二、功能实现 我们以学生为例,实现增删改查功能。 1、搭建UI层 我们这里使用ASP 阅读全文
posted @ 2020-02-23 01:17 .NET开发菜鸟 阅读(2014) 评论(1) 推荐(1) 编辑
摘要:一、一定要async到底 一定要让async的传染性(调用异步方法要用await,用了await的方法就要声明为async,调用我这个async方法的地方必须要await.....)不要轻易直接调用Task的Wait、WaitAll等方法。等待一个用await,而不是task.Wait();等待多个 阅读全文
posted @ 2020-02-22 16:02 .NET开发菜鸟 阅读(355) 评论(1) 推荐(1) 编辑
摘要:一、MVC中使用异步 1、MVC中如何使用异步 我们新建一个MVC的项目,我们在Home控制器的Index方法里面读取一个文件的内容,然后返回给用户,我们看下面的代码: /// <summary> /// 异步方法 /// </summary> /// <returns></returns> pub 阅读全文
posted @ 2020-02-22 10:50 .NET开发菜鸟 阅读(362) 评论(0) 推荐(0) 编辑
摘要:1、TPL中,如果程序中出现异常,除非使用try...catch进行捕获异常,否则有呢能会感觉不到出现了异常。 2、TPL程序有时候还会抛出AggregateException,这通常发生在并行有多个任务执行的情况下,因为多个并行的任务可能会发生多个异常,因此会包装为AggregateExcepti 阅读全文
posted @ 2020-02-22 09:42 .NET开发菜鸟 阅读(257) 评论(0) 推荐(0) 编辑
摘要:一、异步接口的声明 我们已经了解到,如果一个方法是异步的,那么这个方法的返回值类型是Task<T>,那么接口中该如何规定异步方法呢? 一样的,如果接口中的方法是异步的,那么规定方法的返回值类型是Task<T>即可,看下面的代码: interface ITest { /// <summary> /// 阅读全文
posted @ 2020-02-22 09:16 .NET开发菜鸟 阅读(1970) 评论(0) 推荐(0) 编辑
摘要:一、引言 我们先来看下面的一个小示例:一个Winfrom程序,界面上有一个按钮,有两个异步方法,点击按钮调用两个异步方法,弹出执行顺序,代码如下: using System; using System.Threading; using System.Threading.Tasks; using Sy 阅读全文
posted @ 2020-02-21 23:19 .NET开发菜鸟 阅读(439) 评论(0) 推荐(0) 编辑
摘要:一、引言 我们有时侯需要在程序里面调用Http接口、请求http资源、编写http爬虫等的时候都需要在程序里面进行Http请求。很多人习惯的WebClient、HttpWebRequest在TPL下有很多用起来不方便的地方,TPL下推荐使用HttpClient(using System.Net.Ht 阅读全文
posted @ 2020-02-21 17:43 .NET开发菜鸟 阅读(493) 评论(0) 推荐(1) 编辑
摘要:一、引言 .NET中很多的类、接口在设计的时候都考虑了多线程问题,简化了多线程程序的开发,不用自己去写WaitHandler等这些底层的代码,由于历史的发展,这些类的接口设计有着三种不同的风格:EAP、APM和TPL。目前重点用TPL。 二、EAP EAP是Event-based Asynchron 阅读全文
posted @ 2020-02-21 09:32 .NET开发菜鸟 阅读(570) 评论(0) 推荐(2) 编辑
摘要:一、引言 在前面的文章中,我们是使用“锁”的方式实现了线程间的通信,这种通信方式比较笨重。除了锁之外,.NET中还提供了一些线程间更自由通讯的工具,他们提供了通过“信号”进行通讯的机制,通俗的比喻为“开门”、“关门”:Set()开门、Reset()关门、WaitOne()等着。 二、WaitHand 阅读全文
posted @ 2020-02-20 23:01 .NET开发菜鸟 阅读(1538) 评论(0) 推荐(1) 编辑
摘要:一、线程异常 我们在单线程中,捕获异常可以使用try-catch,代码如下所示: using System; namespace MultithreadingOption { class Program { static void Main(string[] args) { #region 单线程中 阅读全文
posted @ 2020-02-12 19:20 .NET开发菜鸟 阅读(849) 评论(0) 推荐(0) 编辑
摘要:一、基本概念 1、Task优势 ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便,例如: ThreadPool不支持线程的取消、完成、失败通知等交互性操作; ThreadPool不支持线程执行的先后次序; .NET Framework 在4. 阅读全文
posted @ 2020-02-12 00:17 .NET开发菜鸟 阅读(2273) 评论(0) 推荐(1) 编辑
摘要:await和async是.NET Framework4.5框架、C#5.0语法里面出现的,await和async是语法糖。 注意: 1、async出现在方法的声明里面,任何一个方法都可以增加async。 2、await放在Task前面,async和await是成对出现的,只有async是没有意义的, 阅读全文
posted @ 2018-07-01 20:06 .NET开发菜鸟 阅读(2278) 评论(0) 推荐(1) 编辑
摘要:一、ThreadPool ThreadPool是.Net Framework 2.0版本中出现的。 ThreadPool出现的背景:Thread功能繁多,而且对线程数量没有管控,对于线程的开辟和销毁要消耗大量的资源。每次new一个THread都要重新开辟内存。 如果某个线程的创建和销毁的代价比较高, 阅读全文
posted @ 2018-06-02 09:03 .NET开发菜鸟 阅读(5404) 评论(0) 推荐(2) 编辑
摘要:一、基本概念 1、进程 首先打开任务管理器,查看当前运行的进程: 从任务管理器里面可以看到当前所有正在运行的进程。那么究竟什么是进程呢? 进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或 阅读全文
posted @ 2016-12-11 17:10 .NET开发菜鸟 阅读(299860) 评论(38) 推荐(113) 编辑