XmlParseException-构造函数的调用-调用线程必须是STA
本文关键字:调用 STA 构造函数 XmlParseException- 线程 | 更新日期: 2023-09-27 18:24:08
这显然是一个很受欢迎的问题,但我还没有找到任何与我的问题密切相关或解决我的问题的解决方案。
这是一个带有两个项目的C#WPF程序,一个用于UI,另一个用于后端。
出现XmlParseException:"对与指定绑定约束匹配的类型"Sundial.UI.MainWindow"的构造函数的调用引发了异常。"行号"4"和行位置"9"。
检查InnerException,我得到"调用线程必须是STA,因为许多UI组件都需要它。"
这是我的主窗口中的部分:
<Window x:Class="Sundial.UI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Views="clr-namespace:Sundial.UI.Views"
Title="Sundial"
MinWidth="550" MinHeight="400"
Width="1100" Height="700">
<Grid>
<Views:SundialControl/>
</Grid>
</Window>
这个错误让我很困惑,因为自从上次成功运行以来,我没有添加任何新内容。这是在我开始尝试更改解决方案中项目的名称之后才出现的。我也没有写多线程程序(至少据我所知)。
我发现的事情:
1) 这不是一个好的答案,但我最终做的第一件事是从头开始重建程序,启动一个新的解决方案,创建项目(使用我们正在使用的新名称),并将相关代码复制回来。这很痛苦,但新版本现在可以工作了。
2) 当我从原始文件复制设置时,我注意到前端项目的属性窗口中的程序集名称和默认命名空间与项目名称不匹配。凭直觉,我把这个改成了匹配的,原来的现在也能用了。我最初跳过了这些,因为我怀疑更改它们可能会更改生成的.exe文件(我想保留它)的名称。不幸的是,.exe的名称必须更改。
在我的Visual Studio版本中,我也从未找到调用堆栈窗口。它列出了大多数位于debug->windows下的地方,但我只在那里显示了Breakpoints、Output和Immediate。