在WPF中,当长时间执行任务或使用不当的线程操作时,可能会导致UI界面冻结。一种解决方法是使用异步代码执行任务。以下是一个包含代码示例的
解决方案
:
在XA
ML
中创建一个按钮并添加点击事件:
<Button x:Name="startButton" Content="Start T
as
k" Click="startButton_Click"/>
在代码-behind中创建异步方法:
private
as
ync void StartT
as
k
As
ync()
// 执行长时间任务
在点击按钮事件中
调用
异步方法:
private
void startButton_Click(object sender, RoutedEventArgs e)
T
as
k.Run(() => StartT
as
k
As
ync());
使用 T
as
k.Delay() 来模拟长时间任务的执行:
private
as
ync void StartT
as
k
As
ync()
// 模拟任务执行
await T
as
k.Delay(10000);
这样,长时间任务将在新的线程中执行,不会阻塞UI线程,并且UI界面不会冻结。