要从WPF中的BackgroundWorker线程直接访问UI线程,您可以使用Dispatcher对象。以下是一个简单的示例:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Start" Click="Button_Click" />
</Grid>
</Window>
using System.ComponentModel;
using System.Threading;
using System.Windows;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += Worker_DoWork;
worker.RunWorkerAsync();
}
private void Worker_DoWork(object sender, DoWorkEventArgs e)
{
// 在这里执行您的后台任务
Thread.Sleep(5000);
// 使用Dispatcher对象访问UI线程
Dispatcher.Invoke(() =>
{
MessageBox.Show("Hello from UI thread!");
});
}
}
}
在这个示例中,我们创建了一个BackgroundWorker实例,并在其DoWork事件中执行了一个后台任务。然后,我们使用Dispatcher.Invoke方法在UI线程中显示一个消息框。这样,您就可以从BackgroundWorker线程直接访问UI线程了。
领取专属 10元无门槛券
手把手带您无忧上云