为vb6应用程序制作C#终止事件?我有一个处理非常非常长的时间的VB6应用程序。直接杀死它是不可行的,所以我想在VB6应用程序中设置某种标志。如果在我的C#应用程序中我决定关闭它,我想切换此标志以让VB6应用程序知道已请求关闭。现在,我还需要一些命名的东西,因为会有几个VB6应用程序作为activexexe旋转。有谁知道如何实现这样的目标?工作流程如下C#应用程序-多个VB6activex.exes在单独的线程中旋转,应用程序用一些东西初始化(下面称为标志)我可以在C#中更改,并调用DoStuff命令,这需要很长时间回来。VB6-获取带有标志的初始化命令。调用DoStuff。在DoStuff循环中,它检查标志是否仍然设置。C#-通过将标志设置为另一个状态来终止项目有什么想法吗?这是用于VB6客户端和VB6服务器之间异步后台处理的非常标准的方案。(例如,它出现在DanAppleman的书和Microsoft的VB6示例中。)我认为它也适用于C#客户端。这个方案意味着客户端实际上不需要多线程,因为调用线程在“DoStuff”发生时不会阻塞。棘手的部分是确保DoStuff以适当的时间间隔引发事件-太长,你不能在你想退出时退出:太短,你会减慢DoStuff。此外,当DoStuff退出时,它必须卸载隐藏的表单。如果DoStuff确实设法在中止之前完成所有工作,您可以引发不同的事件来告诉客户端工作已完成。创建ActiveX对象时,将保留存储在应用程序或线程中的引用。COM将处理跨线程的编组。有了适当的参考,您可以调用一个方法并将其终止。如果将引用保留在线程中,则需要使用.NET的进程间消息传递机制将其传递给.NET线程以在ActiveXEXE上设置kill标志。我不会在进程边界之间保持引用开放,但是您可以通过在.Net中缓存和调用kill来恢复进程的longhWnd。以上是C#学习教程:MakeC#killeventforvb6application?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
