我有一个VB6应用程序,处理非常非常长的时间.直接杀死它是不可行的,所以我想在VB6应用程序中设置某种标志.如果在我的C#应用程序中我决定将其关闭,我想切换此标志以让VB6应用程序知道已请求关闭.现在,我还需要一些命名的东西,因为将有几个VB6应用程序作为activex exes旋转.有谁知道如何实现这样的东西?工作流程如下
C#app - 在单独的线程中旋转多个VB6 activex.exes,用某些东西初始化应用程序(以下称为标志)我可以在C#中更改,并调用DoStuff命令,这需要很长时间才能返回.
VB6 - 获取带有标志的initialize命令.DoStuff被调用.在DoStuff循环中,它检查标志是否仍然设置.
C# - 通过将标志设置为另一个状态来终止项目
有任何想法吗?
这是一个非常标准的方案,用于VB6客户端和VB6服务器的异步后台处理.(例如,它出现在Dan Appleman的书和微软的VB6样本中.)我认为它也适用于C#客户端.
此方案意味着客户端实际上不需要是多线程的,因为调用线程在"DoStuff"发生时不会阻塞.棘手的部分是确保DoStuff以适当的间隔引发事件 - 太长时间,并且当你想要的时候你不能退出:太短,并且你正在放慢DoStuff的速度.此外,当DoStuff退出时,它必须卸载隐藏的表单.
如果DoStuff确实设法在中止之前完成所有工作,您可以引发一个不同的事件来告诉客户端该工作已完成.
归档时间: |
|
查看次数: |
2300 次 |
最近记录: |