应用程序对象正在关闭异常

Chr*_*sto 5 c# wpf excel

我正在使用多个Windows窗体和多个Element宿主对象开发Excel加载项以包含WPF控件.我还有一个调用Web服务的表单.并将结果显示回Excel.

我目前面临的问题是当前:在与插件进行一些交互后(没有找到特定的顺序),我的插件停止正常运行,在PresentationFramework.dll中的某处抛出了无效的操作异常.我无法检查那里运行的代码,因为它是隐藏的.

Exception表示如下:"应用程序对象正在关闭".

可能是什么导致了这个?

它是在用于某些自定义绘图的控件的初始化时抛出的

        InitializeComponent();
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪如下所示:

在System.Windows.Application.GetResourcePackage(Uri packageUri)\ r \n在System.Windows.Application.GetResourceOrContentPart(Uri uri)\ r \n在System.Windows.Application.LoadComponent(对象组件,Uri resourceLocator)\ r \n在D:\ Projects\Common\Depict\Drawing\MoleculeView.xaml中的Drawing.MoleculeView.InitializeComponent()中:在D:\ Projects\Common\Depict \中的Drawing.MoleculeView..ctor()中的第1行\ r \n Drawing\MoleculeView.xaml.cs:第192行\ r \n在DrawingControlWrapper.MultipleDrawingControl.LoadMolecule(分子分子,Point []界限)c:\ Users\Nikolay\Desktop\Addin\DrawingControlWrapper\MultipleDrawingControl.xaml.cs:line 32\r \n在CallSite.Target(Closure,CallSite,MultipleDrawingControl,Object,Point [])\ r \n,位于c:\ Users\Nikolay\Desktop\Addin\LMCExcelFunctions\ThisAddIn.cs:第182行\ r \n在CallSite.Target(Closure,CallSite,Type,Object)\ r \n在LMCExcelFunctions.ThisAddIn.addin_SheetSelectionChange(Object sh,Range target)在c:\ Users\Nikolay\Desktop\Addin\LMCExcelFunctions\ThisAddIn.cs:第93行

XAML看起来像这样:

<UserControl x:Class="Drawing.MoleculeView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <DockPanel x:Name="layout"   HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    </DockPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

Geo*_*ott 17

如果您设置Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown,您的问题应该消失.

  • 当我想在WinForm应用程序中显示WPF窗口(可能多次)时,这对我很有用. (6认同)

Chr*_*sto 1

通过使用内部元素宿主来解决:看起来由元素宿主内托管的控件创建的任何控件也必须有自己的元素宿主。