
C#
文章平均质量分 63
如果我来了6
这个作者很懒,什么都没留下…
展开
-
QuartZ 定时任务
应用场景1.需要在每天/每月/年的某个时间点执行一部分代码2.需要我们的项目每隔多长时间来执行一部分代码3.需要我们的项目某一个业务场景下,满足某一个条件后去执行一段代码QuartZ介绍Quartz.NET是一个强大、开源、轻量级的任务调度框架。任务调度在我们的开发中经常遇到,如说:每天晚上三点让程序或网站执行某些代码,或者每隔5秒种执行一个方法等。Windows计划任务也能实现类似的任务调度,但是Quartz.net有一些有优秀的特性,如:数据库支持,集群,插件,支持cron-like表达式原创 2021-11-05 00:00:41 · 393 阅读 · 0 评论 -
C# 表达式目录树Expression
表达式目录树表达式目录树:语法树,或者说是一种数据结构1.表达式目录树Expression:System.Linq.Expressions;2.描述了多个变量或者和常量之间的关系,按照一定的规则进行组装!可以向委托一样使用lambd表达式快捷声明;不能有语句体,声明只能有一行代码;可以通过Compile(),编译成一个委托;Func<int, int, int> func = (m, n) =>{ int i = 0; return m * n + 2;原创 2021-09-25 22:01:37 · 896 阅读 · 0 评论 -
C# 多线程之Await和Async
await/async语法用同步的方式写异步回调C#5 (.NET4.5) 引入的语法糖C#7.1,Main入口也可以C#8.0,可以使用异步流await foreach和可释放对象 await using1 async 是用来修饰方法,如果单独出现,方法会警告,没有什么作用2 await在方法体内部,只能放在async修饰的方法内,必须放在task前面3 async/await方法里面如果没有返回值,默认返回一个Task,或者void(推荐用Task,而不是void,因为这样才能awa原创 2021-09-21 21:47:37 · 3369 阅读 · 1 评论 -
C# 多线程之Task高级用法
ParallelParallel并发执行多个Action,主线程会参与计算—阻塞界面,等于TaskWaitAll+主线程计算。 { Parallel.Invoke(() => this.DoSomethingLong("btnParallel_Click_1"), () => this.DoSomethingLong("btnParallel_Click_2"),原创 2021-09-20 13:39:03 · 1788 阅读 · 0 评论 -
C# using释放资源
using 语句允许程序员指定使用资源的对象应当何时释放资源。为 using 语句提供的对象必须实现 IDisposable 接口。此接口提供了 Dispose 方法,该方法将释放此对象的资源。总而言之,当一个类继承了 IDisposable 接口时,我们尽量要用using或者Dispose函数来手动释放对象的资源。//用法1:using (Font font2 = new Font("Arial", 10.0f)){}//用法2://可以有多个对象与 using 语句一起使用,但是必须在原创 2021-08-30 22:42:25 · 1880 阅读 · 0 评论 -
C# 动态代理
.net core的实现方法: /// <summary> /// 利用.NetRemoting动态代理 /// .NET Core用DispatchProxy实现 /// 通过动态代理,完成通用功能的扩展 /// </summary> public class DynamicProxy { public static void Show() { UserInfo user原创 2021-08-30 13:41:06 · 1416 阅读 · 0 评论 -
C# 性能优化之Lazy<T> 实现延迟初始化
在.NET4.0中,可以使用Lazy 来实现对象的延迟初始化,从而优化系统的性能。延迟初始化就是将对象的初始化延迟到第一次使用该对象时。延迟初始化是我们在写程序时经常会遇到的情形,例如创建某一对象时需要花费很大的开销,而这一对象在系统的运行过程中不一定会用到,这时就可以使用延迟初始化,在第一次使用该对象时再对其进行初始化,如果没有用到则不需要进行初始化,这样的话,使用延迟初始化就提高程序的效率,从而使程序占用更少的内存。下面我们来看代码,新建一个控制台程序,首先创建一个Student类,代码如下:usi转载 2021-08-19 08:41:21 · 238 阅读 · 0 评论 -
查找库(包)文件的好办法
网站https://libs.garden/原创 2021-08-18 15:16:13 · 203 阅读 · 0 评论 -
C# 多线程之Task
开启多线程{ //第一种方式 Task task = new Task(() => { this.DoSomethingLong("btnTask_Click_1") }); task.Start();}{ //第二种方式 Task task = Task.Run(() => this.DoSomethingLong("btnTask_Click_2"));}{ //第三种方式 TaskFactory taskFa原创 2021-08-03 23:38:40 · 3528 阅读 · 0 评论 -
C# 多线程之ThreadPool
池化思想如果某个对象创建和销毁代价比较高,同时这个对象还可以反复使用的,就需要一个池子保存多个这样的对象,需要用的时候从池子里面获取;用完之后不用销毁,放回池子。(享元模式)线程池节约资源提升性能;此外,还能管控总数量,防止滥用。线程池使用分配线程WaitCallback waitCallback = o =>{ Console.WriteLine(o); this.DoSomethingLong("btnThreadpool_Click");};ThreadPool.原创 2021-07-25 23:12:35 · 761 阅读 · 0 评论 -
C# 多线程之Thread
Thread开启线程thread.Start()开启线程1、无参数情况ThreadStart method = () =>{ Thread.Sleep(3000); this.DoSomethingLong("btnThread_Click");};Thread thread = new Thread(method);thread.Start(); 2、带参数情况ParameterizedThreadStart mehtod = s =>{ Co原创 2021-07-19 22:15:22 · 1097 阅读 · 0 评论 -
C# 多线程之同步、异步、BeginInvoke
同步和异步同步方法调用方式:代码执行一行一行的来,按照顺序执行;符合我们的开发思维;(线程ID是同一个–同一个线程来执行的所有操作);异步方法调用方式:没有等待完成,直接进入到下一行,启动一个新的线程来执行动作(线程ID不一样);特点对比不卡顿界面,UI线程(主线程)闲置,计算任务都交给子线程去执行;同步方法慢,异步方法快;因为多线程并发,以资源换性能;同步方法按顺序执行,异步方法无序性;BeginInvoke详细用法Invoke为同步调用;BeginInvoke为异步调用原创 2021-07-18 17:09:35 · 1241 阅读 · 0 评论 -
C#中匿名函数、委托delegate和Action、Func、Expression、Lambda的关系和区别
Lambda表达式Lamda表达式基本写法是()=>{ };Lambda和方法一样都可以传入参数和拥有返回值。(int x)=>{return x;};Lambda表达式并不是C#独有的,其它语言也拥有Lambda表达式。一些文档上写Lambda是匿名函数,我认为是不对的,Lambda可以表示一个匿名函数,但是还可以来表示Linq表达式啊。delegate委托委托基本的使用包括声明一个委托、实例化一个委托、使用一个委托。// 声明一个委托,类型是myDelegate,public转载 2021-07-14 09:38:45 · 646 阅读 · 0 评论