bzu*_*ith 5 .net vb6 com-interop
我有一些VB6代码,我需要慢慢转移到.NET.其中一些需要调用网络.我正在从.NET dll进行Web调用,一旦完成,就会触发一个事件.我在VB6中处理事件.现在,这在我的测试机器和大多数用户的机器上工作正常,但是一些用户在事件被触发时的某个时刻会得到一致的程序崩溃.
我认为这是一个线程问题.那么我应该如何处理.NET方面的线程呢?调用.NET代码时没有同步上下文,我认为这可能是问题所在.如何将异步操作返回到VB6调用线程?我的VB6代码是STA,我读到事情会自动通过COM编组到VB6线程,但也许那是错的?如果它确实是一个线程问题,我不完全明白该怎么做.
我无法找到计算机出现崩溃问题的模式,以及哪些模块没有.
所以我后来发现我被误导了,除了少数开发人员的机器之外,它不能在几乎所有用户的机器上运行。问题是.tlb文件未生成和注册。
似乎如果您从主线程触发事件,一切都很好。但是,如果您异步触发事件,则只有两种方法可以使其正常工作而不崩溃:
请注意,如果您使用的是免注册 COM,则选项 2 需要comInterfaceExternalProxyStub程序集清单中的元素。请参阅此处的问题和答案以获取相关示例
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |