.NET中调用COM的一些问题
2004-06-26 11:46 灵感之源 阅读(2054) 评论(6) 编辑 收藏 举报因为不想花太多的时间去迁移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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架