WPF 创建子线程示例
时间: 2023-11-19 07:46:36 浏览: 37
下面是一个简单的示例,演示如何在WPF应用程序中创建和使用子线程:
```csharp
using System.Threading;
using System.Windows;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(new ThreadStart(DoWork));
thread.Start();
}
private void DoWork()
{
// 在这里执行自己的工作
// 这里只是简单地休眠5秒钟
Thread.Sleep(5000);
// 当工作完成时,可以使用Dispatcher来更新UI
Dispatcher.Invoke(() =>
{
MessageBox.Show("工作完成!");
});
}
}
}
```
在这个示例中,我们在`Button_Click`事件处理程序中创建了一个新的线程,并启动了一个名为`DoWork`的方法。该方法可以执行任何我们想要在后台线程中执行的工作。在这个例子中,我们只是简单地让线程休眠5秒钟。
当工作完成时,我们使用`Dispatcher`对象来更新UI。这是必要的,因为UI元素只能从创建它们的线程中访问。我们使用`Dispatcher.Invoke`方法来在UI线程上执行一个委托,这个委托显示了一个消息框告诉用户工作已经完成。
需要注意的是,如果在后台线程中更新UI,可能会导致应用程序崩溃或出现其他问题。因此,我们必须确保只在UI线程上更新UI元素。