摘要:
昨天看到一篇帖子,说的是C#里面针对byte类型的计算,+号操作符和+=操作符对于数据类型的隐式转换有两种不同的处理方式,例如下面的代码是不能编译通过的: using System; public class ByteOp { public static void Main() { byte b = 1; b = b + 1; } } 使用csc.exe编译的结果是:ByteOp.cs(8,13)... 阅读全文
摘要:
在COM时代里,套间是用来简化多线程环境下使用COM对象的,然而在.NET里面,微软又放弃了套间的概念,这样给我们在.NET里面使用COM对象的时候造成了很多的麻烦。例如有的时候你会发现在有的线程里面创建了COM对象并将它的引用保存在全局变量里面,在其他的线程里面使用的时候,却发现.NET扔出一个InvalidCastException的异常,发生这种情况大多数都是因为两个.NET线程运行在不同的套间引起的。 阅读全文
摘要:
在网上看到很多网友对.NET程序与COM互操作的编码有疑问,写了几篇文章,希望能够对大家有所帮助。 P/Invoke: 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明 .NET程序使用COM组件: COM套间对.NET程序使用COM对象的影响 让人混淆的UnmanagedType.LPStruct列集指令(翻译) COM程序中使用.NET组... 阅读全文
摘要:
我在以前的一篇文章《COM互操作 - 在VB 脚本里面使用.NET类型》里面写过如何在COM客户端程序里面使用.NET组件,但是这些.NET组件都属于进程内的组件,即COM客户端需要将CLR和.NET组件都加载进自身进程的内存空间里面才能使用。上一次在MSDN中文论坛上看到有网友问如何使用C#编写一个进程外的COM组件,由于在使用regasm.exe注册.NET组件的时候,regasm.exe将.... 阅读全文
摘要:
.NET常见线程简介(翻译) 阅读全文
摘要:
VC编写的程序不能在其他机器上运行的解决方案(续) VC编写的程序不能在其他机器上运行的解决方案 阅读全文
摘要:
我在前面的文章里面提到由于side-by-side问题导致的VC编写的程序不能正常启动的问题的解决方案,这种方法是针对于单个可执行文件的解决方案,但是有的时候你可能会碰到另外一种情况—也是由于side-by-side问题导致的,你的程序支持插件,当你的程序试图加载一个依赖于CRT的DLL的时候,Windows告诉你不能加载DLL。比如微软在06年发布了CLR的开源版本,你在自己机器上用... 阅读全文
摘要:
有的时候,你在Visual C++上面经过好几个月的辛勤努力,终于将程序编写完成并且测试完毕,然而当你试图在客户的发布机上运行刚写好的程序时,有可能会碰到类似下面的错误,操作系统告诉你“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”:一般情况下,这个问题都是由于程序不能找到所需要的C运行库(CRT)而引起的。在Windows XP SP2以后... 阅读全文
摘要:
请看下面这段VBS代码: Set obj = CreateObject("System.Collections.ArrayList") obj.Add("this is a test") obj.Add(1) obj.Add(obj) Msgbox obj(0) Msgbox obj(1) Msgbox obj(2).ToString() 代码里面试图创建一个ArrayList的.NET对象,然后... 阅读全文
摘要:
原文地址:http://blogs.msdn.com/tess/archive/2005/12/20/505862.aspx当你分析一个dump文件的时候,调试里面最艺术的地方就是知道哪些东西是可以忽略的,而哪些是你想要的东西。特别是在你分析一个程序停止响应(hang)的bug时,了解这些常见线程对你非常有帮助,浏览线程各堆栈列表的时候,你可以知道不是这个线程出问题了,也不是那个线程…... 阅读全文