
c#
文章平均质量分 81
c#
晚安苏州
一场游戏一场梦
展开
-
c# TaskScheduler
在MyTaskScheduler 中,我建了一个线程 executionThread,线程方法是一个while循环,一直在监听有没有新的Task过来,有多个Task过来,就按Task创建顺序执行,没有的话 while 就暂停在 waitany 处。一般情况下没什么大问题,但如果这3个中的每个Task都非常耗CPU或者内存,而计算机又需要预留资源去干别的事情,这就要让3个Task不能同时执行。答案就是:TaskScheduler,它可以让已经创建好的 Task 去按照特殊的顺序来执行。怎样达到这样的效果?原创 2024-12-13 16:03:54 · 575 阅读 · 0 评论 -
c# 协变与抗变
在具有可变性的条件下,与原始类型转换方向相同的可变性称作协变(covariant)。在具有可变性的条件下,与原始类型转换方向相反的可变性称作抗变(contravariant),也称逆变。可变性远远不只是针对映射到数组的能力,也有映射其它集合的能力如List.很多人会问,说了这么多,到底这个协变或者抗变有什么实际价值?为什么接口参数类型前加了个 out 关键字就可以安全转换了?因为在接口类型参数前加上修饰关键字 in 和 out 可以表示该类型参数支持抗变和协变,会在安全范围内进行转换。原创 2024-12-12 13:30:23 · 1125 阅读 · 0 评论 -
C# async await
目录一.写法二.用法这里详细记录一下 async 和 await 的用法和注意点,当然前提是对 Task 比较了解了,因为 async 和 await 核心还是在 Task ,下面以实例来说明:一.写法先介绍一下写法,刚接触这两个关键字的时候,看别人写的代码总有些看不懂,后来发现原来是熟手们都喜欢简写,导致新手看不懂,如:private static async Task...原创 2019-10-25 16:03:10 · 558 阅读 · 0 评论 -
C# 异步编程 并行编程
目录异步编程1. Thread2. Task3.async + await并行编程Parallel本篇简单记录一下异步编程和并行编程,并以下图一个 Demo 来演示,源码地址我会公布在文章结尾。 异步编程 个人觉得,异步无非就是不影响某个线程的情况下,在另外的线程里执行任务的过程。异步编程即多线程编程。C# 里多线程编程写法有很多种,这里记录三种。...原创 2018-09-28 13:46:50 · 9526 阅读 · 2 评论 -
C#调用C++ DLL
记录一下两个内容:1.使用VS2015创建C++ DLL;2.使用C#调用上面创建好的C++ DLL;一.使用VS2015创建C++ DLL1.选择win32项目2.点击【下一步】->选择 dll 和预编译头3.随便添加一个头文件【MyTester.h】:并在stdafx.h文件中添加引用:随便输入一些简单定义代码,这里以 struct / int / bool / char /BYTE 类...原创 2018-06-13 11:18:28 · 8807 阅读 · 0 评论 -
C#调试C++ DLL代码
有些C#写的项目中会调用到C++ DLL,有时候需要调试进C++代码里去查问题,过程中经常会遇到无法命中C++代码断点的问题,在此记录一下常用的设置方式,照着设置的话基本上没什么问题:1)确保C#和C++项目源代码在同一个解决方案里 (这一点有待商榷,后来经过验证并不一定要在同一个解决方案里);2)确保C#项目,属性设置->调试选项->“支持非托管代码调试”打钩( 如果是...原创 2017-08-03 15:12:30 · 5268 阅读 · 1 评论 -
C++封装C#中的事件
背景: 用户要求我们提供给他们API,如果这些API都是用C#写的DLL,而用户要求API为C++的 DLL,这种情况下就需要将C# DLL里面的内容封装成C++ DLL。这里针对c#中的事件,记录一下如何使用C++来封装c#的事件:1.创建一个简单的C# DLL实例:a.新建一个c# DLL项目,取名:TestDotNetDLL,添加一个类:Customer,这原创 2016-08-09 11:40:44 · 6323 阅读 · 12 评论 -
C# 使用 Socket (Udp + Tcp)
一个简单示例,记录下C#中如何使用Socket:这个示例的作用是:服务端可以监测到是否和客户端连接,并且如果连上了,可以互相收发消息。如上图,我用的本机测试的,如果是不同机器且连着网,请换成对应的局域网ip或者公网映射ip.步骤:1.新增个空解决方案,并添加两个winform项目,一个是server端一个是client端:2.在服务端和客户端分别加入如下代码:服...原创 2015-06-29 17:35:38 · 4814 阅读 · 0 评论 -
C#:匿名方法
前一阵子去面试,面试题中看到诸多这种写法:button1.Click += delegate(System.Object o, System.EventArgs e) { Console.WriteLine("Just test"); };delegate void Del(int x);Del d = delegate(int k) { /* ... */ };原创 2013-11-03 14:18:03 · 1262 阅读 · 0 评论 -
C#:LINQ
刚刚接触LINQ,对这个语言集成查询(Language INtegrated Query)还很懵懂,遂记录下学习心得,方便以后查阅。LINQ的写法形式有点像SQL,但它跟SQL是没有任何关系,它的作用主要就是用来处理对象的集合。下面以一个简单的例子来展示LINQ的强大之处:如:我要在一批电影集合中找出票价最便宜的前3部电影,下面的代码是以前的做法形式: stati原创 2013-11-03 21:58:17 · 1564 阅读 · 0 评论 -
C#:Lambda 表达式
之前介绍过匿名方法,可以帮我们少敲很多代码,这里又有一个更好的方式可以帮我们少码更多的字,就是Lambda 表达式。Lambda 表达式是匿名函数,它可以为委托赋值,也可以为表达式树赋值。先介绍为委托赋值:举个简单的例子:声明一个委托,它有一个int型参数,返回类型也是int型,这里利用匿名方法为委托赋值,返回输入参数基础上加15的整数。 public d原创 2013-11-03 16:32:34 · 1517 阅读 · 0 评论 -
C#:Attribute类
AttributeAttribute,作为名词,意思是标注,特征的意思。我们经常在日常编码中遇到,在某些类,方法,字段,属性上面有如下情形: [AttributeTargets_All] public TestAttributeClass() { } [Obsolete("该方法已经停用!请使用Method2原创 2013-12-03 23:01:02 · 1654 阅读 · 0 评论 -
C# 控制台程序 打开窗体
控制台项目Project1,程序代码,如:class Program{ private static Thread _thread; static void Main(string[] args) { _thread = new Thread(TestClass.Show); _thread.SetApartmentState(ApartmentState.STA);//设...原创 2020-01-17 17:33:32 · 3749 阅读 · 0 评论