02 2009 档案

摘要: 昨天看到一篇帖子,说的是C#里面针对byte类型的计算,+号操作符和+=操作符对于数据类型的隐式转换有两种不同的处理方式,例如下面的代码是不能编译通过的: using System; public class ByteOp { public static void Main() { byte b = 1; b = b + 1; } } 使用csc.exe编译的结果是:ByteOp.cs(8,13)...阅读全文
posted @ 2009-02-20 19:06 donjuan 阅读(325) | 评论 (2) 编辑
摘要: 在COM时代里,套间是用来简化多线程环境下使用COM对象的,然而在.NET里面,微软又放弃了套间的概念,这样给我们在.NET里面使用COM对象的时候造成了很多的麻烦。例如有的时候你会发现在有的线程里面创建了COM对象并将它的引用保存在全局变量里面,在其他的线程里面使用的时候,却发现.NET扔出一个InvalidCastException的异常,发生这种情况大多数都是因为两个.NET线程运行在不同的套间引起的。阅读全文
posted @ 2009-02-20 19:03 donjuan 阅读(710) | 评论 (0) 编辑
摘要: 我在以前的一篇文章《COM互操作 - 在VB 脚本里面使用.NET类型》里面写过如何在COM客户端程序里面使用.NET组件,但是这些.NET组件都属于进程内的组件,即COM客户端需要将CLR和.NET组件都加载进自身进程的内存空间里面才能使用。上一次在MSDN中文论坛上看到有网友问如何使用C#编写一个进程外的COM组件,由于在使用regasm.exe注册.NET组件的时候,regasm.exe将....阅读全文
posted @ 2009-02-20 18:58 donjuan 阅读(952) | 评论 (0) 编辑
posted @ 2009-02-20 13:27 donjuan 阅读(234) | 评论 (0) 编辑
摘要: 我在前面的文章里面提到由于side-by-side问题导致的VC编写的程序不能正常启动的问题的解决方案,这种方法是针对于单个可执行文件的解决方案,但是有的时候你可能会碰到另外一种情况—也是由于side-by-side问题导致的,你的程序支持插件,当你的程序试图加载一个依赖于CRT的DLL的时候,Windows告诉你不能加载DLL。比如微软在06年发布了CLR的开源版本,你在自己机器上用...阅读全文
posted @ 2009-02-20 10:34 donjuan 阅读(1322) | 评论 (0) 编辑
摘要: 有的时候,你在Visual C++上面经过好几个月的辛勤努力,终于将程序编写完成并且测试完毕,然而当你试图在客户的发布机上运行刚写好的程序时,有可能会碰到类似下面的错误,操作系统告诉你“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”:一般情况下,这个问题都是由于程序不能找到所需要的C运行库(CRT)而引起的。在Windows XP SP2以后...阅读全文
posted @ 2009-02-20 10:33 donjuan 阅读(5448) | 评论 (0) 编辑
摘要: 请看下面这段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对象,然后...阅读全文
posted @ 2009-02-20 00:25 donjuan 阅读(143) | 评论 (0) 编辑

公告