.NET中调用COM的一些问题

因为不想花太多的时间去迁移VB6写的COM组件到.NET,所以考虑用InterOp,导入很顺利,声明也可以,但在获取窗口的Handle(.NET)的时候,卡住了。

问题1:handle
因为COM中声明的hwnd为long,对应.NET的integer,但.NET中的handle类型为IntPtr,是指针,后来查看了相关文档,应该这样处理(VB.NET):

objYourCOM.hwnd=objYourDOTNET.IntPtr.ToInt32

问题2:multi-thread
要在VB6里面实现安全线程是比较困难的事情,为了最大限度榨取.NET的潜力,我把多线程部分挪到.NET中实现,实际上,VB.NET中的多线程调用跟VB6的很类似,都是用AddressOf,不过差别在于:VB6中必须声明为公共Function,VB.NET中要声明为Sub,私有共有皆可。

    Private t As Threading.Thread
    Private WithEvents m As MyObject


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        m.ParentHwnd = Me.Handle.ToInt32
        t = New Threading.Thread(AddressOf m.YourFunction)
        t.Start()
    End Sub


稍后我会介绍怎样把VB6的代码迁移到VB.NET,虽然很多人都谈过,但我会把实际项目代码作为例子,覆盖面比较广,应该能让大家更好地认识.NET。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值