问题描述
我已经创建了一个Windows From应用程序,该应用程序已连接到sql Server,用户可以在其中更新PPT,然后解析它并将数据写入sql数据库。
我将它设置为用户按Ctrl + s(保存)ppt的位置。我的应用程序解析了ppt并自动关闭了ppt。
但是,当用户关闭一个不保存的ppt时,这将破坏基础的rcw或com对象,并且他们使用该应用打开的下一个ppt无法保存并使用Microsoft Interop进行解析,因为它抱怨com对象不存在
我已经尝试使用powerpoint的close事件释放com对象,如下所示,但是此错误仍然存在。如何重建断开的Com对象/ RCW连接,而不必重新启动表单应用程序。
public class PPTHandler
{
private PowerPoint.Application objApp = new PowerPoint.Application();
private bool q = false;
private bool closeCheck = false;
public PowerPoint.Presentation objPres;
private string _location;
public PPTHandler(string location)
{
objApp = new PowerPoint.Application();
objApp.Visible = MsoTriState.msoTrue;
_location = location;
var objPresSet = objApp.Presentations;
objPres = objPresSet.Open(_location,MsoTriState.msoFalse,MsoTriState.msoTrue);
objApp.PresentationCloseFinal += ObjApp_PresentationCloseFinal;
}
private void ObjApp_PresentationCloseFinal(PowerPoint.Presentation Pres)
{
if (closeCheck)
{
Marshal.ReleaseComObject(objPres);
Marshal.ReleaseComObject(objApp);
GC.Collect();
GC.Collect();
Marshal.FinalReleaseComObject(objApp);
objApp = new PowerPoint.Application();
}
System.Threading.Thread.Sleep(1000);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)