gpt4 book ai didi

c# - C# 应用程序中的多个 VB6 单元

转载 作者:行者123 更新时间:2023-11-30 17:02:30 27 4
gpt4 key购买 nike

我们有一个非常古老的遗留 vb6 应用程序,它有一个用作应用程序核心的全局对象,用于存储不同的应用程序设置、调用数据库操作等。具有不同 progid 的多个模块使用此全局对象,并且由于单线程单元而没有问题。

不久前创建了新的 WPF 应用程序,它为我们提供了从 vb6 的过渡,但是由于一些架构错误,它仍然受到 vb6 遗留问题的限制。每个应用程序实例只能连接到一个数据库。它在包装类中保存 vb6 全局对象的静态实例,充当实现遗留功能的桥梁。

现在,我们正在开发不应受限于旧遗留代码的新应用程序,特别是新应用程序应该能够同时连接到多个数据库,但有一个问题:vb6 代码仅限于单个数据库,所以应该有多个 vb6 全局对象实例,每个数据库一个。

所以问题是:是否可能,如果可能,如何在同一个 C# 应用程序中使用多个单独的全局 vb6 对象实例?

我假设此类对象的每个实例都应该存在于它自己的 STA-Thread 中,但我不知道如何创建此类线程,这些线程在整个应用程序运行时都保持事件状态并且具有关联的包装器,包含全局 vb6 对象的实例并支持从 GUI 线程调用某些函数(以及如何组织此类跨线程通信,没有 thread.invoke(...))。我考虑过使用 wpf 调度程序模型(包装类是 DispatcherObject,每个实例都有自己的 Dispatcher 和它自己的 STA-Thread),但我看不出如何实现这样的事情。我也认为它可以通过在不同的 AppDomains 中加载包装类(静态)的每个实例来实现,但我不知道它是否解决了 COM 的 STA 问题。

最佳答案

这是可能的,使用所谓的非托管代码。看看这个: http://www.codeproject.com/Articles/154144/Using-Unmanaged-VB6-Code-in-NET

关于c# - C# 应用程序中的多个 VB6 单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19666909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com