随笔分类 - C#
摘要:多线程的Join() 一、简介 Join方法主要是用来阻塞调用线程,直到某个线程终止或经过了指定时间为止。官方的解释比较乏味,通俗的说就是创建一个子线程,给它加了这个方法,其它线程就会暂停执行,直到这个线程执行完为止才去执行(包括主线程)。 二、代码 class Program { static v
阅读全文
摘要:多线程的ResetAbort() 一、简介 Abort方法可以通过跑出ThreadAbortException异常中止线程,而使用ResetAbort方法可以取消中止线程的操作,下面通过代码演示使用 ResetAbort方法。 二、代码 class Program { static void Mai
阅读全文
摘要:约束泛型 代码: namespace Demo5 { class Program { static void Main(string[] args) { int number = 20210527; string str = "Hello,2021-05-27"; //MyTest1传入参数类型必须
阅读全文
摘要:C#等待异步操作执行完的方式 代码实现: namespace AsyncCallbackDemo1 { class Program { static void Main(string[] args) { //<参数,返回值> Func<int, int> mySum1 = SumNumbers; F
阅读全文
摘要:C#无损压缩图片 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Im
阅读全文
摘要:Log4.net Helper工具类 一、Config文件配置 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.
阅读全文
摘要:C#写XML文件 一、案例一 //XML文件写方法 //编写XML文件的格式并存储到指定的FilePath(路径) internal void WriterXML(string FilePath) { try { XmlDocument doc = new XmlDocument();//声明一个X
阅读全文
摘要:调用QQ_Mail发送邮件 代码案例一: private void button1_Click(object sender, EventArgs e) { string myMaillAdress = ""; string myMaillPassword = ""; string myMaillMe
阅读全文
摘要:C#中对Config配置文件的读写操作案例 一、简介 应用程序配置文件(App.config)是标准的 XML 文件,XML 标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。 *.exe.config配置文件样式: <?xml version
阅读全文
摘要:C#判断一串字符串是否为数字字符串 简介: 当现在有一个字符串,需要判断这个字符串是否可以转为Number类型时,可以运用下面这段代码进行判别。其中包括判别带小数点的数字字符串。 public bool IsNumeric(string str) { if (str == null || str.L
阅读全文
摘要:OverWrite 一、简介 overwrite覆写,用new实现。在子类中用 new 关键字修饰定义的与父类中同名的方法,也称为覆盖,覆盖不会改变父类方法的功能。 二、代码 namespace 重寫 { class Parent { public void F() { Console.WriteL
阅读全文
摘要:Overload 一、简介 overload重载,在同一个类中方法名相同、参数或返回值不同的多个方法即为方法重载。注意事项:1.出现在同一个类中。2.参数列表不同或返回类型和参数列表都不同,只有返回类型不同不是重载。(参数列表包括参数个数和参数类型) 二、代码 namespace 重载 { clas
阅读全文
摘要:Override 一、简介 override意思是重写。它是在子类中重写父类中的方法,两个函数的函数特征(函数名、参数类型与个数)相同,用于拓展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现,提供从基类继承的成员的新实现,而通过override声明重写的方法称为基方法。 二、重写抽象方法 cl
阅读全文
摘要:Parallel.For循环与普通的for循环的比较 一、Parallel.For循环优于For的情况 代码: #region Parallel.For public static void ParallelForTest() { //标准For var dt = DateTime.Now; var
阅读全文
摘要:C#的构造函数在基类和父类中执行顺序 一、简介 当我们没有在子类构造函数中写上 base(),默认会先调用父类中无参的构造函数,再调用子类。当在有参构造函数后写上base时,只调用子类构造函数中有参的构造函数,隐藏父类无参构造函数。 二、代码案例 父类代码: #region 父类 /// <summ
阅读全文
摘要:C#构造函数 一、简介 构造函数,基本用法是在类对象声明的时候完成初始化工作。 二、实例构造函数 1、构造函数的名字与类名相同。 2、使用 new 表达式创建类的对象或者结构(例如int)时,会调用其构造函数。并且通常初始化新对象的数据成员。 3、除非类是静态的,否则会为没有构造函数的类,自动生成一
阅读全文
摘要:C# 多线程的死锁 一、死锁简介: 在多道程序设计环境下,多个进程可能竞争一定数量的资源,。一个进程申请资源,如果资源不可用,那么进程进入等待状态。如果所申请的资源被其他等待进程占有,那么该等待的进程有可能无法改变状态,这种情况下称之为死锁。 二、死锁条件 死锁的四个条件: 1.非抢占:资源不能被抢
阅读全文
摘要:Parallel.For()和Parallel.For<TLocal>() 一、简介: Parallel类提供了数据和任务的并行性;Paraller.For()方法类似于C#的for循环语句,也是多次执行一个任务。使用Paraller.For()方法,可以并行运行迭代,迭代的顺序没有定义。在For(
阅读全文
摘要:复杂多线程环境下使用读写锁同步写入文件 代码一: class Program { static int LogCount = 1000; static int SumLogCount = 0; static int WritedCount = 0; static int FailedCount =
阅读全文
摘要:C#使用读写锁解决多线程并发 一、简介: 在开发程序的过程中,难免少不了写入错误日志这个关键功能。实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件。现在我们来讲下最后一种方法: 在选择最后一种方法实现的时候,若对文件操作与线程同步不熟悉
阅读全文