
C#
pc0de
面向工资编程
展开
-
C#中的线程之线程同步
写在前面 之前写过一篇博客,C#中的线程之Abort陷阱,最近比较忙,没时间写后面的内容,恰好今天偶然看到一个技术问答。线程抢占执行怎么使10-20连续输出 。回答该问题顺便写了几个例子,于是就有了这篇博客。问题描述 主要解决的问题是让两个线程代码能按照一定的顺序执行。题主抛出的代码是这样的:// 需要让打印出来的结果顺序输出 static void Main(string[] args)原创 2016-11-13 15:17:31 · 572 阅读 · 0 评论 -
C#中的线程之Abort陷阱
C#中的线程陷阱之Abort1.简介 C#中通常使用线程类Thread来进行线程的创建与调度,博主在本文中将分享多年C#开发中遇到的Thread使用陷阱。 Thread调度其实官方文档已经说明很详细了。本文只简单说明,不做深入探讨。 如下代码展示了一个线程的创建与启动 static void Main(string[] args) {原创 2016-10-23 21:28:28 · 22415 阅读 · 2 评论 -
C#互操作的内存溢出问题
c#调用C++DLL代码,发现了一个隐藏很深的问题。 危害很大,而且不易察觉。大概是申明c++的函数时候,有一个long类型的指针。在C#中我的申明成了这样:public extern void Method(ref uint para);最初怎么也没有发现这里面有什么问题,知道这个隐藏的问题暴露出来,把前面申明的一个变量改变了, 我才恍然大悟。uint test =原创 2013-10-09 00:24:02 · 3166 阅读 · 0 评论 -
互操作之DotnetFramework跨平台解决方案
首先说明下,这里“跨平台”是指Windows下的32位与64位平台,不涉及windows以外的平台。 以前的项目都是x86平台下运行, 自然也没有考虑过 DotnetFramework 跨多平台解决方案 这个问题。最近在实现不同平台运行的时候发现有些与我之前想法不符合的地方。于是便决定记录下来。平台dotnetframework 下配置解决方案平台有四种类型:Itanium 、...原创 2017-03-18 08:51:36 · 982 阅读 · 0 评论 -
C#互操作之GC回收陷阱
起因其实这得从好多年前的一个BUG说起.那一年, 刚刚接触C++不久, 遇到的一个空引用之类的错误,反复调试却没有发现C++有任何的问题 单独跑C#测试也没有任何问题, 屏蔽C++的回调才找到出问题的地方。示例代码为了复现那个BUG的样子,我甩个DEMO出来。C++的代码是下面这样的,公布SetCallback函数,由C#设置回调地址,然后在C++非托管线程中不断调用该...原创 2017-03-23 21:12:03 · 1200 阅读 · 0 评论 -
开源的GIS - GMap.Net
推荐一款pc桌面的开源GIS开发库,觉得不错,满足GIS的基本要求,又不需要ArcGIS那么复杂的授权。说说优缺点吧:优点: 开源,使用无需商业授权源码结构清晰 支持多种离线、在线地图。 可扩展性强 安装方便(仅两个动态库)使用简单缺点: 仅支持.net平台 源码易读性不强(或许这个结论下得太早,大致看了结构比较清晰,但是单个的文件动辄几千行,真读不下去)需原创 2017-04-22 15:07:41 · 1162 阅读 · 0 评论 -
使用HandleSpy定位托管代码句柄泄漏
引子 我们知道句柄泄漏原因多种多样,一般泄漏的对象主要是内核句柄 、 文件句柄、互操作句柄等。由于Framework的GC帮我们干了很多事情,所以很多C#程序员养成了吃饭后不洗碗的习惯,new出来的对象基本不考虑如何清理。一般的对象当然不用考虑,但是遇到需要释放的对象(如IO操作、内核对象创建等),忘了释放,那问题便产生了。环境说明本文所有演示均在win7 32位。需要安装原创 2017-05-21 18:10:33 · 1894 阅读 · 0 评论