gpt4 book ai didi

c# - 不能使用与其父 Freezable 属于不同线程的 DependencyObject

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:24 27 4
gpt4 key购买 nike

我有一个 wpf 表单,我想在用户从控件中做出选择时立即显示加载弹出窗口,因为数据加载可能需要很长时间才能看到,因为数据库不是本地的。在我为弹出窗口创建线程之前,我已经完成了所有工作。

这是我创建线程的地方:

public void Start()
{

if (_parent != null)
_parent.IsEnabled = false;

_thread = new Thread(RunThread);

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

_threadStarted = true;
SetProgressMaxValue(10);

Thread th = new Thread(UpdateProgressBar);
th.IsBackground = true;
th.SetApartmentState(ApartmentState.STA);
th.Start();
}

和线程方法:

private void RunThread()
{

_window = new WindowBusyPopup(IsCancellable);
_window.Closed += new EventHandler(WaitingWindowClosed);
_window.ShowDialog();
}

现在执行的那一刻我得到这个错误:

Cannot use a DependencyObject that belongs to a different thread than its parent Freezable.

任何帮助将不胜感激:)

最佳答案

尝试使用窗体的 Dispatcher 属性。Dispatcher.BeginInvoke(...)

或者只使用 BackgroundWorker类,因为它有一个名为 ReportProgress() 的方法来报告进度百分比。当您可以刷新进度条或其他内容的值时,这将触发 ProgressChanged 事件...

关于c# - 不能使用与其父 Freezable 属于不同线程的 DependencyObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999666/

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