随笔分类 - C# 托管和非托管
摘要:在网上也看过一些关于线程同步的文章,其实线程同步有好几种方法,下面我就简单的做一下归纳。 一、volatile关键字 volatile是最简单的一种同步方法,当然简单是要付出代价的。它只能在变量一级做同步,volatile的含义就是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我。(【转自w
阅读全文
摘要:核心类:Semaphore,通过int数值来控制线程个数。 * 通过观察构造函数 public Semaphore(int initialCount, int maximumCount);: * initialCount: 可以同时授予的信号量的初始请求数。 * maximumCount: 可以同时
阅读全文
摘要:内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件,就像操作进程空间里的地址一样了,比如使用c语言的 memcpy等内存操作的函数。这种方法能够很好的应用在需要频繁处理一个文件或者是一个大文件的场合,这种方式处理IO效率比普通IO效率要高 共享内存是内存映射文件的一种特殊
阅读全文
摘要:一、创建DLL 1、建立动态链接库项目 2、创建头文件和源文件 删除 framework.h、dllmain.c 等现有文件(照顾VS2013等低版本),创建新的头文件 Mydll.c Mydll.h Mydll.h头文件代码如下: #include<stdio.h> _declspec(dllex
阅读全文
摘要:C#调用C++dll的方法和步骤 其他分享涉及到的概念和方法对于像我这样比较菜的选手看起来比较费劲并且很难抓住重点,这里我总结了一段时间的研究成果供初学者救济之用,简单明了。 工具/原料 VS2008 方法/步骤 新建项目->Visual C++->Win32项目 MyDLL 注意:C++编写的dl
阅读全文
摘要:使用的工具是VS2010哦~其他工具暂时还没试过 我新建的工程名是my21dll,所以会生成2个同名文件。接下来需要改动的只有画横线的部分 下面是my21dll.h里面的。。。 下面的1是自动生成的不用动,或者也可以不要,因为只是一个宏而已下面可以做相应修改。 下面的2是自动生成的类,我没用就注释掉
阅读全文
摘要:在单片机项目开发中,上位机也是一个很重要的部分,主要用于数据显示(波形、温度等)、用户控制(LED,继电器等),下位机(单片机)与 上位机之间要进行数据通信的两种方式都是基于串口的: USB转串口 —— 上位机和下位机通过USB转串口连接线直接相连进行数据交互; 串口转WIFI(ESP8266) —
阅读全文
摘要:async/await是C#5.0中推出的,先上用法: static void Main(string[] args) { Console.WriteLine(" 主线程启动 "); Task<int> task = GetStrLengthAsync(); Console.WriteLine("主
阅读全文
摘要:vs2012 winform 连接摄像头设备,这里需要引入 代码: using AForge; using AForge.Controls; using AForge.Imaging; using AForge.Video; using AForge.Video.DirectShow; 在工具箱中还
阅读全文
摘要:1、键盘钩子: 通过代码将键盘的事件屏蔽掉,达到锁屏的效果。(参考地址:https://zhidao.baidu.com/question/135132386108196965.html) 2、代码如下: public class Hook : IDisposable { public delega
阅读全文
摘要:为了实现Undo和Redo,必须要在程序中保存起程序的运行状态,从而能够在Undo时跳转到前一个状态和在Redo时跳转到下一个状态。为了实现状态的维护,我采用了两个栈来分别保存Undo操作的状态和Redo操作的状态。 public static Stack<MyCommand> undoStack
阅读全文
摘要:Dictionary<string, object> dic = new Dictionary<string, object>(); long lg = 12345; dic["123"] = lg; long ?l = dic["123"]as long?; if(l!=null) { Conso
阅读全文
摘要:泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。 您可以通过数据类型的替代参数编写类或方法的规范。当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型。
阅读全文
摘要:SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。 排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中
阅读全文
摘要:虽说输入法不是什么新事物,各种语言版本都有,不过在C#不常见;这就会给人一种误会:C#不能做!其实C#能不能做呢,答案是肯定的——三种方式都行:IMM、TSF以及外挂式。IMM这种就是调windows的一些底层api,不过在新版本的windows中基本上已经不能用了,属于一种过时的操作方式。TSF是
阅读全文
摘要:class Program { //写线程将数据写入myData static int myData = 100; //读写次数 const int readWriteCount = 20; //false:初始时没有信号 //static ManualResetEvent autoResetEve
阅读全文
摘要:public class SharedData { public int Value { get; set; } } public class Test { async Task ModifyValueAsync(SharedData data) { Console.WriteLine("pre v
阅读全文
摘要:要理解 C# 中的 volatile 关键字,就要先知道编译器背后的一个基本优化原理。比如对于下面这段代码: public class Example { public int x; public void DoWork() { x = 5; var y = x + 10; Debug.WriteL
阅读全文
摘要:class Program { private static volatile bool bChanged; static void Main(string[] args) { Thread t1 = new Thread(run1); Thread t2 = new Thread(run2); t
阅读全文

浙公网安备 33010602011771号