gpt4 book ai didi

.net - 在不同线程中创建 WPF 窗口时出现异常

转载 作者:行者123 更新时间:2023-12-01 15:39:39 25 4
gpt4 key购买 nike

我有一个 WPF 应用程序,我在不同的线程中运行一些动画,所以我的主 UI 线程将响应。我正在使用发布的代码 here :

Thread thread = new Thread(() =>
{
Window1 w = new Window1();
w.Show();

w.Closed += (sender2, e2) => w.Dispatcher.InvokeShutdown();

System.Windows.Threading.Dispatcher.Run();
});

thread.IsBackground = true;
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

它通常工作正常,但在系统部署后,我收到有关应用程序崩溃的投诉,并显示以下堆栈跟踪:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.Collections.Generic.List`1.RemoveAt(Int32 index)
at System.IO.Packaging.PackagePart.CleanUpRequestedStreamsList()
at System.IO.Packaging.PackagePart.GetStream(FileMode mode, FileAccess access)
at System.IO.Packaging.PackagePart.GetStream()
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at Window1.xaml:line 1
at Window1..ctor()

有没有人以前见过这个异常并且可以解释那里发生了什么?这个特定异常(exception)的原因可能是什么?
我正在使用 .Net 3.5 SP1

最佳答案

它看起来像 System.Windows.Application.LoadComponent 不是线程安全的,因此您对 Window 构造函数的调用可能会导致错误。

您可以尝试在主线程中创建窗口实例并仅在新线程中显示它,但我不确定这是否适合您的应用程序需求。

关于.net - 在不同线程中创建 WPF 窗口时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10085811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com