如何解决C#Microsoft Interop用户关闭Microsoft应用程序时该怎么办
我已经创建了一个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 举报,一经查实,本站将立刻删除。