Word Document.Close 和线程中止异常 Windows 7

发布于 2025-01-03 11:05:22 字数 558 浏览 0 评论 0原文

我有一个项目类型为office 2010的word文档。

在功能区中有一个按钮可以执行一些逻辑。 在此逻辑的末尾有一行类似:

Globals.ThisDocument.Application.ActiveDocument.Close(ref dowdSaveChanges, ref oMissing, ref oMissing);

在 Windows XP 上一切正常,但是当用户尝试在 Windows 7 上使用此文档时,这行代码会抛出异常,例如:

System.Threading.ThreadAbortException: The thread was beeing aborted. 
   w Document35.WorkflowRibbon.Button1Click(Object sender, RibbonControlEventArgs e) w D:\_DEV\WorkflowCS2_WordTemplatest_Office2010\Document35\WorkflowRibbon.cs:wiersz

可能是什么原因?

I have a project type office 2010 word document.

In ribbon there is a button which does some logic.
On the end of this logic there is a line like:

Globals.ThisDocument.Application.ActiveDocument.Close(ref dowdSaveChanges, ref oMissing, ref oMissing);

On Windows XP everything worked ok but when a user tries to work with this document on Windows 7 this line of code throws exception like:

System.Threading.ThreadAbortException: The thread was beeing aborted. 
   w Document35.WorkflowRibbon.Button1Click(Object sender, RibbonControlEventArgs e) w D:\_DEV\WorkflowCS2_WordTemplatest_Office2010\Document35\WorkflowRibbon.cs:wiersz

What could be the reason?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

轻许诺言 2025-01-10 11:05:22

这似乎是 AppDomain 卸载并将执行从非托管代码返回到托管代码的问题。 查看 MSDN 论坛 其中讨论了此 ThreadAbortExcpetion 行为。您可能只需要更新 VSTO 运行时。

This seems to be an issue of the AppDomain unloading and returning execution from unmanaged to managed code. See MSDN forums which discusses this ThreadAbortExcpetion behavior. Potentially you just need to update the VSTO Runtime.

扶醉桌前 2025-01-10 11:05:22

试试这个:

    private void Button1Click(object sender, RibbonControlEventArgs e)
    {
        object oMissing = System.Reflection.Missing.Value;
        object dowdSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
        try
        {                
             Globals.ThisDocument.Application.ActiveDocument.Close(ref dowdSaveChanges, ref oMissing, ref oMissing);                
        }
        catch (ThreadAbortException t)
        {
            Globals.ThisDocument.ThisApplication.Quit(ref dowdSaveChanges, ref oMissing, ref oMissing);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

try this:

    private void Button1Click(object sender, RibbonControlEventArgs e)
    {
        object oMissing = System.Reflection.Missing.Value;
        object dowdSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
        try
        {                
             Globals.ThisDocument.Application.ActiveDocument.Close(ref dowdSaveChanges, ref oMissing, ref oMissing);                
        }
        catch (ThreadAbortException t)
        {
            Globals.ThisDocument.ThisApplication.Quit(ref dowdSaveChanges, ref oMissing, ref oMissing);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文