• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > COM调用问题:怎样在应用程序调用完COM的方法,并退出后,使COM继续运行?

COM调用问题:怎样在应用程序调用完COM的方法,并退出后,使COM继续运行?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 COM调用问题:怎样在应用程序调用完COM的方法,并退出后,使COM继续运行?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: COM调用问题:怎样在应用程序调用完COM的方法,并退出后,使COM继续运行?
描述:

各位大虾:
我在一个outproc COM中有两个方法:
start()
stop()
start()方法启动一个线程;stop()方法中止这个线程;
我希望在应用程序中调用这两个方法:
1.调用start()方法,然后应用程序退出,COM继续运行;
2.直到调用stop()方法,COM停止运行。
CMycom:IMycom
{
...
}
CMycom::start()
{
id = _thread(..., mythreadproc , ) ;
}
CMycom::stop()
{
_endthread( id );
}
main函数如下:
main()
{
CoInitialize() ;
//create a COM interface pointer;
IMycom *myCom = CoCreateInstance(...);
myCom->start() ;
CoUninitialize() ;
}
当应用程序退出,COM似乎也中断了start方法中的线程,退出了;
我希望COM能够不退出,继续运行这个线程,该怎么办?
有能给予帮助者,再给100分!
谢谢!


解决方案1:

每一个进程都有一个主线程(也是缺省线程, 一个进程中至少要有一个线程),就是main函数调用开始的那个线程. 这个线程是由系统创建的, 你自己创建的线程都是副线程, 当主线程结束之后, 系统就会自动终止所有的副线程(系统调用TerminateThread函数), 所以你创建的线程在主线程结束之后也跟着终止了, 所以你想要维持线程运行,必须要让主线程一直存在.

解决方案2:

你为什么要这样做?

解决方案3:

没有程序引用该 COM 时,将会自动释放。

解决方案4:

在start函数中创建一个窗口,在stop中destroy那个窗口

解决方案5:

可以人为增加接口记数
或用ColockObjectExternal锁住对象,我用的这个

解决方案6:

API : WaitForSingleObject()


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • COM调用问题:怎样在应用程序调用完COM的方法,并退出后,使COM继续运行?

相关文章

  • 2017-06-04 atl基础问题
  • 2017-06-05 临界区应怎么使用啊??
  • 2017-06-05 ADOConnection对象在工作线程中的问题,在App中运行正常,在线程中
  • 2017-06-04 关于外部控件的问题?
  • 2017-06-04 欲做一音频播放器,请教
  • 2017-06-05 dll返回一个stl队列编译错误,把它做引用写在参数里面,也没用,大家来帮帮忙啊!
  • 2017-06-05 怎样在进程之间传递消息!急,在线等!!
  • 2017-06-05 在线程中可以创建一个对话框吗?
  • 2017-06-05 编辑框的简单问题!!API初学者的困惑II
  • 2017-06-05 线程里的窗口对象的使用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 求DCOM的例子
    • 关于Visualstudio,Office,IE复制数据的格式问题。
    • 怎样结束屏幕保护??
    • 继承CListCtrl的ActiveX控件怎么做
    • 为什么我使用mscomm控件编写的程序可以传送小文件,传送大文件就出错?
    • 再次求助!请高手给俺详细分析!在线等!(100大分)!
    • 进程间信号量干扰问题!
    • 怎样在一个程序(进程)中捕获它启动的另外一个进程所出现的任何异常?
    • 请问如何实现进程间通信,如该进程向另一进程发送消息??????
    • 请教连接点事件的参数回传问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有