当前位置: 首页 > news >正文

影楼行业网站软件开发公司

影楼行业网站,软件开发公司,乌兰浩特网站建设,免费手机建站网站先说处理方式 1、最low的方式#xff1a;强制结束进程 //打开进程得到进程句柄 HANDLE hProcessOpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid); if(hProcess!NULL) { //结束进程 if (TerminateProcess(hProcess,0)){printf(结束进程成功\n);return 0;} }这种方式…先说处理方式 1、最low的方式强制结束进程 //打开进程得到进程句柄 HANDLE hProcessOpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid); if(hProcess!NULL) { //结束进程 if (TerminateProcess(hProcess,0)){printf(结束进程成功\n);return 0;} }这种方式简单粗暴但会存在进程安全问题及可能引起数据丢失慎用 2、释放顺序问题 与Execl相关的变量在关闭和释放的时候顺序必须正确。比如要先使用Close()后使用ReleaseDispatch。 顺序尽量做到先 Save—Colse—Release 在Release时我们尽量做到由内到外Rang—Sheet—Sheets—Book—Books—App 注在app退出时一定要注意顺序是先Quit退出再Release如果先Release将无法退出即Quit—Release。 //Save—Colse—Releasebook.Save();book.Close(covOptional, COleVariant(C:\\test\\excel\\test.xlsx), covOptional);books.Close();//释放对象相当重要//由内到外Rang—Sheet—Sheets—Book—Books—Apprange.ReleaseDispatch();sheets.ReleaseDispatch();sheet.ReleaseDispatch();book.ReleaseDispatch();books.ReleaseDispatch();//App一定要释放否则程序结束后还会有一个Excel进程驻留在内存中而且程序重复运行的时候会出错//Quit—Releaseapp.Quit();app.ReleaseDispatch();3、正确释放资源 当我们操作excel后如果没有正确释放资源导致进程被占用那我们就无法退出进程。 下面我们就来讨论下如何正确释放资源使得进程最后正常释放退出。 注与Execl相关的变量必须全部都要释放ReleaseDispatch。 哪些情况下资源需要释放那又如何正确释放这些资源 在调用get_Item后需要释放 1、CWorkbooks对象对get_Item调用后无法释放 通过CWorkbooks对象调用get_Item接口后如果不释放会出现进程无法退出情况如下使用后可能会存在进程无法退出问题。 sheets.get_Item(_variant_t(1));解决方案 //方案一、先赋值给LPDISPATCH对象然后通过release释放 LPDISPATCH lpSheets sheets.get_Item(_variant_t(1)); lpSheets-Release(); //方案二如果变量被AttachDispatch给其他对象则不需要手动释放如 lpSheets sheets.get_Item(_variant_t(1)); sheet.AttachDispatch(lpDisp); //or sheet.AttachDispatch(sheets.get_Item(_variant_t(1)));对于方案一需要注意的是如果lpSheets变量AttachDispatch给其他变量那要注意释放位置否则会导致后续使用报错如下列代码中会在range.AttachDispatch(sheet.get_UsedRange());处报错原因就是前面释放位置不对。 LPDISPATCH lpSheets sheets.get_Item(_variant_t(1)); sheet.AttachDispatch(lpSheets); lpSheets-Release(); range.AttachDispatch(sheet.get_UsedRange());那有人就会说了既然都AttachDispatch了就不需要再释放了但实际情况是在某些使用场景中无法立马AttachDispatch这时就需要手动Release了如需要在获取对象后立马新建一个sheet LPDISPATCH lpSheets sheets.get_Item(_variant_t(1)); sheet sheets.Add(covOptional, _variant_t(lpSheets), _variant_t(1), covOptional); //sheet.AttachDispatch(lpSheets); lpSheets-Release();range.AttachDispatch(sheet.get_UsedRange());2、CRange对象对get_Item调用后无法释放 通过CRange对象调用get_Item接口后如果不释放会出现进程无法退出情况如下使用后可能会存在进程无法退出问题。 range.get_Item(_variant_t(1));解决方案 //方案一、先赋值给VARIANT对象然后通过VariantClear释放 VARIANT var range.get_Item(_variant_t(1), _variant_t(1)); VariantClear(var); //方案二如果变量被AttachDispatch给其他对象则不需要手动释放如 LPDISPATCH lpRang range.get_Item(_variant_t(1)); range.AttachDispatch(lpDisp); //or range.AttachDispatch(range.get_Item(_variant_t(1)));为什么AttachDispatch后就不需要去手动释放了 咱们先看AttachDispatch函数就可以知道根据参数bAutoRelease知道这个接口内会自动释放。 void AttachDispatch(LPDISPATCH lpDispatch, BOOL bAutoRelease TRUE);
http://www.huolong8.cn/news/324246/

相关文章:

  • 阿里云网站建设的步骤过程自己做装修效果图app软件
  • 成都企业网站建设价格网站建设的开发方式
  • 如何查找网站根目录室内装饰公司网站模板
  • 2018年静安区品牌网站建设网站加手机建设png图标
  • 购物网站首页界面设计长春网站制作费用
  • 微信 网站 收费标准在网站建设工作会议上的讲话
  • 如何查询网站的空间商网络公司 建站 官方网站
  • 上海做网站哪家公司正保建筑工程网
  • 网站添加js广告位网站建设相关行业有哪些
  • 做网站的把网站写成一行百度广告登录入口
  • 做网站有年费吗seo关键词排名查询
  • 做标书的任务网站如何做好一个外贸网站的编辑
  • 什么公司做网站出名垦利网站制作
  • 单页面 网站 模板中煤第三建设集团网站
  • 免费推广网站大全下载安装搭建平台激发活力
  • qt 网站开发电商网站建设工具
  • asp.net网站建设项目实战资料网站开发的软件支持
  • 网站建设山西wordpress 404模板
  • 建设网站租服务器装修在线设计平台
  • 网站开发实例企业门户网站源码下载
  • 030159网站建设与维护昆仑万维做网站
  • 卡片式设计的网站最好网站建设
  • 网站页面设计需求网站备案需要哪些资料
  • 千博企业网站管理系统完整版 2014那做网站
  • 福建省建设厅网站人员服装厂家东莞网站建设
  • 网站的建设费用预算工信部网站icp备案查询
  • 贵州省网站备案企业网站做静态网站还是
  • 新网站必须做301定向吗高仿微博wordpress
  • 网盘视频直接做网站在东莞做网站
  • 重庆网站设计哪家好少儿培训