gpt4 book ai didi

c# - 如何在启用控件之前等待

转载 作者:行者123 更新时间:2023-12-02 04:48:51 26 4
gpt4 key购买 nike

我的 WelcomePage 中有一个按钮,但我想等待大约 3 秒钟才能让用户按下它。这是为了让用户被迫阅读简短的信息性陈述。我在 xaml 中默认禁用该按钮,然后在我加载的事件中我想启动计时器并在 3 秒过去后启用该按钮。从这里引用以前的问题 How to Pause without Blocking the UI我有以下内容,但在尝试启用按钮时出现 UnauthorizedAccessException

欢迎页面.xaml

<Button x:Name="welcomeButton" IsEnabled="False" Content="Welcome" Click="welcomeButton_Click"/>

欢迎页面.xaml.cs

void WelcomePage_Loaded(object sender, RoutedEventArgs e)
{
Task.Delay(TimeSpan.FromSeconds(3.0)).ContinueWith(t =>
{
welcomeButton.IsEnabled = true; //UnauthorizedAccessException error
});
}

有更好的方法吗?用户在这个页面上所做的只是阅读一个快速声明,所以有必要阻塞 UI 线程吗?在这种情况下的任何建议或意见将不胜感激。

最佳答案

您需要将上下文编码回 UI 线程:

Task.Delay(TimeSpan.FromSeconds(3.0)).ContinueWith(t =>
{
welcomeButton.IsEnabled = true;
}, TaskScheduler.FromCurrentSynchronizationContext());

请注意,在 Windows Phone 8 中,您可以改用 async/await。这也应该通过 Microsoft.Bcl.Async 包在 7.5 中工作:

async void WelcomePage_Loaded(object sender, RoutedEventArgs e)
{
await Task.Delay(TimeSpan.FromSeconds(3.0));
welcomeButton.IsEnabled = true;
}

关于c# - 如何在启用控件之前等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19260928/

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