gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:47:35 25 4
gpt4 key购买 nike

我的欢迎页面中有一个按钮,但我想等待大约 3 秒钟,然后才允许用户按下它。这使得用户被迫快速阅读内容很少的声明。我在 xaml 中默认禁用该按钮,然后在加载的事件中我想启动计时器,并在 3 秒过去后启用该按钮。从引用这里的上一个问题How to Pause without Blocking the UI我有以下内容,但在尝试启用按钮时收到 UnauthorizedAccessException

WelcomePage.xaml

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

WelcomePage.xaml.cs

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

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

最佳答案

您需要将上下文编码(marshal)回 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/

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