文章分类 - C# Programming
some techniques about C# programming, mainly in image processing applications
摘要:现在暂时用不到,做个标记,反正我也准备把项目迁移到4.0下。由于 .NET 4.0 使用新版本的 CLR,变化也不少,例如:mscoree.dll 变为 mscoree.dll 和 mscoreei.dll,mscorwks.dll 变为 clr.dll,mscorjit.dll 变为 clrjit.dll。这导致在没有安装 .NET 2.0 的情况下,.NET 2.0 程序默认无法在 .NET 4.0 环境下运行(未安装 .NET 2.0/3.0/3.5)。(纠正:不是文件名的变化导致无法运行,而是微软的新策略是强烈建议程序在开发时使用的运行时版本下运行,这样可以保证最大的兼容性)那么怎么办
阅读全文
摘要:1 新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定。 2 安装向导 关闭后打开安装向导,点击下一步,或者直接点击完成。 3 开始制作 安装向导完成后即可进入项目文件夹: 双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来。然后右击你的文件,创建快捷方式,然后把快捷方式分别复制或剪切到左边的"用户的'程序'菜单"和"用户桌面"中。这样安装程序安装完成后会在 "
阅读全文
摘要:一. 为什么要lock,lock了什么?当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待。但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作都是有效即时的,也即保证其操作的原子性。lock是C#中最常用的同步方式,格式为lock(objectA){codeB} 。lock(objectA){codeB} 看似简单,实际上有三个意思,这对于适当地使用它至关重要:1. objectA被lock了吗?没有则由我来lock,否则一直等待,直至objectA被释
阅读全文
摘要:1 必备知识:线程调度/上下文切换原理Windows系统有一个线程调度功能,它以化整为0的形式分布在系统内核的各个角落.系统每时每刻会发生各种事件(硬件中断,比如时钟中断),Windows系统内核在这时得到执行机会,进行线程调度工作(如果没有时钟中断,在单核cpu上,仅一个线程可以cpu被运行,如果用户线程占着cpu不放,操作系统将什么也作不了.).Windows系统内核会遍历一个可调度线程小型库(有很多是不可调度的线程,不在这里.),通过特殊算法,找到下一个被执行的线程.加载线程的信息到cpu寄存器(比如进程的地址空间,ip寄存器指令指针),然后执行线程的代码,Windows系统内核会在下一
阅读全文
摘要:为什么使用 Lock(typeof(ClassName)) 或 SyncLock GetType(ClassName) 是错误的在 C# 中,加锁的做法是 lock(typeof(ClassName)),其中,ClassName 是某个类的名称;在 Microsoft Visual Basic .NET 中,加锁的做法是 SyncLock GetType(ClassName)。背景知识:在多线程编程中,lock/SyncLock 语句用于创建代码中一次只执行一个线程的关键部分或简要部分。(如果您需要同时更新对象中的多个字段,则可能需要该语句 — 您希望确保其他线程不会同时尝试更新该对象!)此语
阅读全文
摘要:解决性能问题的时候,我往往会让客户添加下面一些计数器进行性能收集。Process object下的所有计数器。Processor object下的所有计数器System object下的所有计数器Memory object下的所有计数器如果客户的程序是.NET程序,还会添加 .NET 开头的object下的所有技术其如果客户使用ASP.NET,还会添加 ASP.NET 开头的object下的所有技术其分析性能日志的时候,我会重点观察下面这些计数器Process objectProcess object中的计数器可以针对目标进程分析内存,CPU,线程数目和handle数目。首先要确定目标进程,然
阅读全文
摘要:1:) 下载 http://download.microsoft.com/download/1/3/4/1347C99E-9DFB-4252-8F6D-A3129A069F79/ILMerge.msi2:) 开始-》运行 -》 "cmd" -> "cd C:\Program Files\Microsoft\ILMerge"3:)3.1 合并file1.dll、file2.dll到destination.dll ILmerge /ndebug /target:dll /out:C:\destination.dll /log C:\file1.dll
阅读全文

浙公网安备 33010602011771号