gpt4 book ai didi

.net - 在运行时更新 WPF 控件

转载 作者:行者123 更新时间:2023-12-02 15:42:44 27 4
gpt4 key购买 nike

我正在尝试编写一个 WPF 应用程序,该应用程序将使用线程在运行时更新一组文本框和标签,但问题是,当线程尝试更新文本框和标签时,我会收到以下错误: “调用线程无法访问该对象,因为另一个线程拥有它。”是否可以在运行时更新控件?

最佳答案

是的,但您必须使用 Dispatcher.Invoke 更新 UI 线程中的 UI 元素.

C# 示例:代替

myTextBox.Text = myText;

使用

Dispatcher.Invoke(new Action(() => myTextBox.Text = myText));

VB.NET(版本 4 之前)不支持匿名方法,因此您必须使用匿名函数来解决它:

Dispatcher.Invoke(Function() UpdateMyTextBox(myText))

...

Function UpdateMyTextBox(ByVal text As String) As Object
myTextBox.Text = text
Return Nothing
End Function
<小时/>

或者,您可以使用 BackgroundWorker 启动后台线程。类,它支持通过 ProgressChangedRunWorkerCompleted 事件在 UI 中进行更新:这两个事件都会在 UI 线程中自动引发。可以在这里找到使用BackgroundWorker的示例:SO question 1754827 .

关于.net - 在运行时更新 WPF 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243016/

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