我有这个 xaml
<Window x:Class="TestCloseWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Width="500" Height="400">
<StackPanel>
<TextBlock x:Name="Seconds"></TextBlock>
<Button Content="fasdfd" Click="ButtonBase_OnClick"></Button>
</StackPanel>
</Window>
而这段代码
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}
private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
await CountToTen();
}
private Task CountToTen()
{
return Task.Factory.StartNew
(() =>
{
for (var i = 1; i <= 10; i++)
{
Seconds.Text = i.ToString(CultureInfo.InvariantCulture);
Task.Delay(1000).Wait();
}
}
, CancellationToken.None
, TaskCreationOptions.None
, TaskScheduler.FromCurrentSynchronizationContext()
);
}
}
在这段代码中,我使用 TaskScheduler.FromCurrentSynchronizationContext() 来从后台任务访问 UI。
我希望我可以看到程序计数到 10,但不是它,而是我在 TextBlock 中看到 10 秒和 10 秒后的阻塞 UI
我该如何解决?