摘要: 2010-03-22 15:10C#调用C++ DLL 注意事项1.c#只能引入c++的函数,而不能引入类,除非dll做成com的2.c++中导出函数时要用def文件导出,如果用static _declspec(dllexport) double Add(double a,double b); 这种方式导出,c#调用时的入口点会被转为乱七八糟的东西,但可以用Exescope查出来。3.如果你的操作系统是64位的,调用是会提示dll无效,这时要把平台调整为x86才可以;4.把c++dll的属性,改为支持公共语言运行时,才能在c#中引用。5.函数声明方法:[DllImport("CMat 阅读全文
posted @ 2013-11-25 21:54 SupremeGISER 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 天无意中看到有关Invoke和BeginInvoke的一些资料,不太清楚它们之间的区别。所以花了点时间研究了下。 据msdn中介绍,它们最大的区别就是BeginInvoke属于异步执行的。Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托。Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。msdn说明:控件上的大多数方法只能从创建控件的线程调用。 如果已经创建控件的句柄,则除了 InvokeRequired 属性以外,控件上还有四个可以从任何线程上安全调用的方法,它们. 阅读全文
posted @ 2013-11-23 23:00 SupremeGISER 阅读(502) 评论(1) 推荐(0) 编辑
摘要: Invoke是同步操作,也就是阻塞调用Invoke方法的线程,直到Invoke中的Delegate方法执行完之后,才会接着执行Invoke后面的代码。BeginInvoke是异步操作,不阻塞调用BeginInvoke方法的线程,继续执行BeginInvoke后面代码,等后面代码执行完后,才会执行BeginInvoke中的Delegate方法。 Invoke和BeginInvoke中的代理都是在控件的线程上即UI线程上执行。 阅读全文
posted @ 2013-11-23 22:57 SupremeGISER 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 1. 空间数据格式及相互转换 1.1现行主要数据格式 空间数据主要可以分为两大类:GIS数据和CAD制图数据。 GIS数据的现行主要数据格式包括: (1)ArcGIS平台(美国ESRI公司)的SHP、Coverage、E00格式; (2)MapInfo平台(美国MapInfo公司)的MIF、Tab格式; (3)国产GIS平台MapGIS、SuperMap的内部支持数据格式; (4)中国的国家标准:空间数据交换格式(VCT)。 其中,只有Coverage格式文件包含空间拓扑关系,而SHP和MIF分别是ESRI公司和MapInfo公司的外部交换格式。 CAD制图数据的现行主要数据... 阅读全文
posted @ 2013-08-30 13:48 SupremeGISER 阅读(831) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/linghe301/article/http://msdn.itellyou.cn/ 阅读全文
posted @ 2013-08-29 17:03 SupremeGISER 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 性能主要指两个方面:内存消耗和执行速度。性能优化简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。本文以.NET平台下的控件产品MultiRow为例,描述C#性能优化的实践。· 理解需求 MultiRow的一个性能需求是:“百万行数据绑定下平滑滚动。”整个MultiRow项目的开发过程一直在考虑这个目标。· 理解瓶颈 99%的性能消耗是由于1%的代码造成的。大部分性能优化都是针对这1%的瓶颈代码进行的。具体实施也就分为两步:“发现瓶颈”和“消除瓶颈”。· 切忌过度 性能优化本身是有成本的。这个成本不单单体现在做性能优化所付出 阅读全文
posted @ 2013-08-27 16:48 SupremeGISER 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 最近发现对于C#的使用水平一只停留在3.0的程度 对于4.0 5.0的新特性使用的很少,写一篇文章记录一下增加一下认识。C# 3.5扩展方法扩展方法所在的类和扩展方法必须是静态的 并且扩展方法第一个参数是要扩展的类名 并在thisPerson person = new Person();public static class Extension { public static void ExtensionMethod(this Person p) { .......; } }person.ExtensionMethod();当person调用 ExtensionMethod()时,C... 阅读全文
posted @ 2013-08-27 14:37 SupremeGISER 阅读(197) 评论(0) 推荐(0) 编辑
摘要: /// /// 将角度转换成弧度 /// /// 角度 /// public static double AngleToRadian(double angle) { return angle * Math.PI / 180; } /// /// 实现两个起始角度相差90度,且方向相反的直角坐标系的角度之间的相互转换。 /// 例如 将以正北为0,顺时针为正的角度,转换到 以X轴为0 ,逆时针为正的角度 ///... 阅读全文
posted @ 2013-08-27 13:15 SupremeGISER 阅读(603) 评论(0) 推荐(0) 编辑