我有一些VB6代码需要慢慢转移到.NET。其中一些需要拨打网络。我正在从.NET DLL进行网络调用,当它完成时,它会触发一个事件。我在VB6中处理事件。现在,这在我的测试机器和大多数用户的机器上都能正常工作,但有些用户在事件被触发时会在程序中一致崩溃。如何在.NET中安全地运行异步代码和事件,以便VB6可以处理它?
我在想这是一个线程问题。那么我应该如何处理.NET方面的线程呢? .NET代码被调用时没有同步上下文,我认为这可能是问题。我将如何获得一个异步操作返回到VB6调用线程?我的VB6代码是STA,我读过的东西会通过COM自动封送到VB6线程,但也许这是错误的?如果这确实是一个线程问题,我不完全明白该怎么做。
我一直无法找到一个模式,哪些计算机有崩溃问题,哪些没有。
是的,您必须在调用您的构造函数的线程上引发事件。你确实需要一个SynchronizationContext,你可以很容易地从Winforms表单中获得一个。一个就足够了,它不一定是可见的,只要阅读它的Handle属性就可以了。 –
嗯我怎么会从VB6表单中获取?我不打开.NET中的任何窗体 – bzuillsmith
您是否尝试过在可能的目标机器上分离和比较.Net框架?尽管微软声称在最近的.Net框架版本上完全向后兼容,但我发现不止一次,这个声明基本上是纯马屎。 – Stavm