![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c#
文章平均质量分 61
c#和dot net
xujianjun229
基于.Net Framework技术平台的Winform软件开发(C++、C#)Web App开发(C#)、单片机应用开发类(C)、单片机软硬件设计类、基于STM32的嵌入式系统软件开发(C)
展开
-
取消task异步任务
取消task异步任务原创 2022-08-17 16:36:07 · 972 阅读 · 0 评论 -
C#之CallerMemberName、CallerFilePath、CallerLineNumber
C#之CallerMemberName、CallerFilePath、CallerLineNumber转载 2022-08-06 22:17:42 · 506 阅读 · 0 评论 -
c# 反射专题研究
c# 反射示例项目原创 2022-08-06 14:07:27 · 132 阅读 · 0 评论 -
c# 反射之特性(Attribute)使用
c# 反射之特性(Attribute)使用原创 2022-08-06 22:00:01 · 636 阅读 · 0 评论 -
使用 Async 和 Await 的异步编程
使用 Async 和 Await 的异步编程原创 2022-08-06 14:51:20 · 106 阅读 · 0 评论 -
c# lock 关键字讲解
lock语句获取给定对象的互斥 lock,执行语句块,然后释放 lock。 持有 lock 时,持有 lock 的线程可以再次获取并释放 lock。 阻止任何其他线程获取 lock 并等待释放 lock。lock语句具有以下格式lock (x){ // Your code...}其中x是引用类型的表达式(任意的数据类型,包含:object、list、queue等,但string、bool等不能使用lock关键字)。 它完全等同于object __lockObj =...转载 2021-11-27 11:44:55 · 622 阅读 · 0 评论 -
C#线程锁(自旋锁SpinLock、互斥锁Mutex、混合锁Monitor | lock)
一、自旋锁自旋锁是指当一个线程在获取锁对象的时候,如果锁已经被其它线程获取,那么这个线程将会循环等待,不断的去获取锁,直到获取到了锁。适合于原子操作时间非常短的场景优点:避免了线程上下文切换。性能较高。缺点:如果长时间等待,将消耗大量的CPU资源。而且多个等待中的线程,并不是等待时间越长就先获取到锁,可能会一直等待下去。两种实现方式如下:实现代码一:private static int _SpinLock = 0;//锁对象private static int incrVal.转载 2021-11-24 20:24:08 · 6944 阅读 · 1 评论 -
C# 元组和值元组
C# 元组和值元组 1、TupleTuple是C# 4.0时出的新特性,.Net Framework 4.0以上版本可用。元组是一种数据结构,具有特定数量和元素序列。比如设计一个三元组数据结构用于存储学生信息,一共包含三个元素,第一个是名字,第二个是年龄,第三个是身高。元组的具体使用如下:static Tuple<string, int, uint> GetStudentInfo(string name){ return new Tuple<string转载 2021-11-24 20:18:56 · 796 阅读 · 0 评论 -
C# List用法 List介绍
C# List用法 List介绍1、怎样创建泛型集合?List<T> ListOfT = new List<T>();2、List的方法和属性 方法或属性 作用 Capacity 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。您可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。 Count 属性,用于获取数组中当前元素数量 Item( ) 通过指定索引获取或设置元素。对于List类..转载 2021-11-24 20:12:50 · 15581 阅读 · 0 评论 -
内存泄漏检测工具vmmap使用指南
先上vmmap工具下载链接:链接:https://pan.baidu.com/s/1EqdKrVR-BXdGAmIOmYcWYw提取码:2af3一、什么是内存泄漏?内存泄漏是指程序分配内存,然后在不再需要时不将其归还。泄漏的内存被浪费了,因为程序本身不再使用它,但在程序退出之前没有其他东西可以使用它。高内存使用率并不总是意味着存在内存泄漏。如果您正在做的事情本身就需要大量内存,并且在操作完成后该内存被返还,那么这不是内存泄漏。内存泄漏通常是无界。如果你继续做一些触发泄漏的事情,那么...原创 2021-09-11 16:29:55 · 3920 阅读 · 0 评论 -
不同平台下对默认栈大小修改
一、前言:在应用程序我们经常需要定义大的数组,数组定义成局部变量非静态变量,那么数组就会在栈上分配,当数组超过默认栈的大小时,会引起非常内存访问。一般,在Unix-like平台,栈的大小不是由程序自己来控制的而是由环境变量来控制的,所以就不能通过设置编译器(像gcc)的任何编译标志来设置栈的大小;在windows平台下,栈的大小的信息是包含在可执行文件中的。它可以在Visual C++的编译过程中设置。也可以用Microsoft提供的一个...原创 2021-09-11 15:13:36 · 5527 阅读 · 1 评论 -
C#多线程和异步编程——Task和async/await详解
目录一、什么是异步二、Task介绍1 Task创建和运行2 Task的阻塞方法(Wait/WaitAll/WaitAny)三、异步方法(async/await)一、什么是异步 同步和异步主要用于修饰方法。当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法;当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务,调用者不用等待该方法执行完毕,我们称这个方法为异步方法。 异步的好处在于非阻塞(调用线程不会暂停执行去等待子线程.原创 2021-08-22 10:04:41 · 2332 阅读 · 2 评论 -
在WinForm和WPF中,利用Func,Action,Predicate进行线程UI交互
一、下面这部分主要讲解如何在WinForm中利用这些委托进行线程和界面的交互。1、首先对于Func来说,由于其必须具有返回值,所以我们可以利用如下代码来实现线程和界面的交互: #region 利用Func实现线程和界面交互 private void AlternationUsingFunc(object text) { //无参数,但是返回值为bool类型 this.Invoke(new Func<bo原创 2021-08-20 21:40:57 · 723 阅读 · 0 评论 -
浅谈C#中常见的委托<Func,Action,Predicate>
前言:一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的。Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中使用就可以弥补反射所损失的性能。委托是面向对象的编程语言中新加入的一种特性,在C#中引入委托使得C#程序的编写更加灵活。C#,中可以自己定义各种各样的委托,但是C#语言也预先为我们定义了两个做常用的委托,一个是F..原创 2021-08-20 21:23:41 · 476 阅读 · 0 评论 -
C# this.Invoke()的作用与用法、不阻塞UI界面线程的延时函数
一、this.Invoke()的作用与用法、不阻塞UI界面线程的延时函数Invoke()的作用是:在应用程序的主线程上执行指定的委托。一般应用:在辅助线程中修改UI线程(主线程)中对象的属性时,调用this.Invoke();在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的更新界面显示。正确的做法是将工作线程中涉及更新界面的代码封装为一个方法...原创 2021-08-20 20:12:53 · 17559 阅读 · 0 评论 -
c#调用c++带有回调函数方法的实现
在c++中有个回调函数指针的概念,只需要某个函数在调用定时器函数时传入一个函数指针就能达到目的,但C#中没有函数指针的概念,我们该怎样来实现呢。其实说到回调函数,大家应该能想到c#中的委托,虽然名字不一样,但在各自的语言范畴都能实现相似的功能。所以我们就可以大胆的尝试下,把c#中的委托传给c++,看c++是否能够承认它就是回调函数。首先用c++写一个带有回调函数的方法 Test,在此省略。接着,在c#中调用,如:[DllImport("Test.dll",ChartSet.Ansi,Entry转载 2021-08-19 20:28:01 · 1357 阅读 · 0 评论 -
c#调用c++封装的DLL的方法
1、静态调用 (编译进程序,程序启动后,会一直占用内存,直到程序退出后,才会释放) [System.Runtime.InteropServices.DllImport(".\\NiuTuAllDll\\NiuTuNetCameraDll.dll", CallingConvention = System.Runtime.InteropServices.CallingConvention.Cdecl)] public static extern int UserMan_Login(st...原创 2021-08-19 19:34:53 · 598 阅读 · 0 评论 -
分享4篇微软.net官方指导网址
微软开发者博客https://devblogs.microsoft.com/微软官方.net文档https://docs.microsoft.com/zh-cn/dotnet/原创 2021-08-19 00:04:14 · 193 阅读 · 0 评论 -
C#中Lambda表达式的用法
本经验介绍C#语言中Lambda表达式的用法,Lambda表达式是为了简化C#的代码而出现的,下面将通过对比Lambda表达式出现前后对C#源代码的影响,来讲解Lambda表达式的用法。工具/原料 Visual Studio 2013 方法/步骤 1 Lambda表达式出现之前,计算两个int类型变量的和,需要定义一个Add方法,在Main函数中,调用Add方法,传入两个参数,并接受返回结果。(为了方便讲解,我用到了Func委托) 如下图: 2 输出的结果就是30转载 2021-08-17 11:45:53 · 681 阅读 · 0 评论 -
关于C#中委托的一点理解
C#中委托是一种类型。可以这么笼统的理解:int型变量代表一个整型,而委托类型的变量代表一个方法的地址(将方法名称传入constructor并实例化该委托变量)。1 为何要使用委托我觉得网上关于什么现实生活的举例并不好,还是要从程序的本质去理解:1)程序是由事件驱动的。2)事件发生时,操作系统需要知道事件对应的处理函数。例如,用户按下鼠标时操作系统需要知道此时该做什么,是关闭窗口呢,还是打开某个文件呢?当网卡接收到数据包时操作系统也需要知道此时该做什么,是往上层传输呢,还是丢弃呢?..转载 2021-08-17 11:41:16 · 217 阅读 · 0 评论