托管代码 和非托管代码在业务方面 托管代码要比非托管代码的速度要快 在程序第一次运行的时候 托管代码 会经过csc编译器 还有CLR 转换成本地平台的二进制指令 那么之后就会变非托管代码的运行的速度要快 但是一段程序关闭 或关机 在其运行的时候那么又需要转换成本地平台的二进制指令.net平台的简答的...
分类:
Web程序 时间:
2014-06-30 11:37:24
阅读次数:
235
研究MSIL纯属于个人喜好,说在前面MSIL应用于开发的地方很少,但是很大程度上能够帮着我们理解底层的原理,这是我了解MSIL的主要原因。托管代码表示应用程序的方法的功能,它们以微软的中间语言(Microsoft intermediate language,MSIL)或公共语言运行(common i...
分类:
其他好文 时间:
2014-06-28 20:10:11
阅读次数:
265
C#如何直接调用非托管代码,通常有2种方法:1. 直接调用从DLL导出的函数。2.调用COM 对象上的接口方法我主要讨论从dll中导出函数,基本步骤如下:1.使用C#关键字static和extern声明方法。2.将DllImport属性附加到该方法。DllImport属性允许您指定包含该方法的DLL...
分类:
其他好文 时间:
2014-06-28 10:29:56
阅读次数:
339
1.【StructLayout】控制类或结构的数据字段在托管内存中的物理布局,即类或结构需要按某种方式排列。如果要将类传递给需要指定布局的非托管代码,则显式控制类布局是重要的。2.[MarshalAs]告诉CLI,这个函数返回值占几个字节1和2用于C#调用C++的DLL3.__declspec(dl...
分类:
其他好文 时间:
2014-06-23 08:03:50
阅读次数:
324
对“demo!demo.Index+HookProc::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
解救办法:
//保持活动 避免 回调过程 被垃圾回收
GCHandle.Alloc(委托);...
分类:
其他好文 时间:
2014-06-22 22:04:30
阅读次数:
226
第十四章 兼容性和高级互操作
在这一章,我们将学习F# 与其他语言进行互操作所需的内容,不仅包括在.NET 框架内,而且也包括从F# 中使用非托管代码,以及从非托管代码中使用 F#。
警告
在本书中,我尽一切努力保证使你只需要了解 F#;然而,在这一章,虽然我一直保持代码对这些语言中的最低需求,但是,如果你知道一点 C#、 C++ 或 .NET Common IL 的内容,对你是...
分类:
其他好文 时间:
2014-06-22 20:06:00
阅读次数:
179
看了P/Invoke技术的介绍,于是想写下点东西,东西包含两个部分:知识的纪录和我的理解及疑问。r托管代码中调用非托管API函数的过程 1、定位包含API的DLL; 2、载入DLL 3、找到DLL中想要的那个API,然后把参数压入栈中、排列数据(排列数据是什么意思?数据封送) 4、把执行权限...
分类:
Web程序 时间:
2014-06-21 08:11:32
阅读次数:
257
最近一直被C# 调用native code时的内存错误,各种错误所困扰。而且在.net 4.0中非托管代码的异常不能被托管代码抓获,导致程序直接crash。 最终找到了.net 的方法。MSDN有关于expection 的详细解释。 1. 在.net 3.5中是可以抓取AccessViola...
分类:
其他好文 时间:
2014-06-18 17:10:39
阅读次数:
249
众所周知,asp.net是基于通用语言运行库创建的,也就是所谓的托管执行环境。生成的代码称为托管代码。编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息。而我们编写的组件一般是在非托管环境下创建的,这些组件往往不包含元数据信息,那么我们怎么在托管代码中使用这些元数据信息...
分类:
Web程序 时间:
2014-06-13 06:49:16
阅读次数:
270
IntelliLock控件是一个能用于控件与应用程序许可授权的100%托管的先进解决方案。与.NET
Reactor提供的基于源代码保护的授权许可系统不同,IntelliLock选择了以100%托管的方式应用许可与保护功能。以这种方式,用户可以无需使用附加文件即可创建单一文件。其灵活的集成策略使得用...
分类:
其他好文 时间:
2014-06-07 21:49:19
阅读次数:
429