在按钮状态切换之间添加延迟(禁用,然后在5秒后启用)。 (Xamarin,c#)

时间:2015-09-09 14:15:57

标签: c# multithreading xaml xamarin

我有一个"开始"按钮,当我点击时,按钮立即被禁用,我需要延迟5秒才能启用按钮。

开始按钮(启用)----单击---->开始按钮(禁用)------等待5秒------>开始按钮(已启用)。

我正在使用按钮点击处理程序:

我尝试了以下方法:

public async void OnStartClick(object sender, EventArgs e)
{
Button button = (Button) sender;
button.IsEnabled = false;
Task taskA = Task.Factory.StartNew(() => DoSomeWork(10000000));
taskA.Wait(5000);
button.IsEnabled = true;
}
static void DoSomeWork(int val)
{
Thread.SpinWait(val);
}
public async void OnStartClick(object sender, EventArgs e)
{
Button button = (Button) sender;
button.IsEnabled = false;
System.Threading.Thread.Sleep(5000);
button.IsEnabled = true;
}

是否有任何工作,并且很容易实现延迟(要求)。

谢谢!

2 个答案:

答案 0 :(得分:3)

您需要替换taskA.Wait(5000);等待Task.Delay(5000)。不要忘记添加await关键字,否则该方法将立即返回,即它不会等待5secs。也替换System.Threading.Thread.Sleep(5000);等待Task.Delay(5000)

答案 1 :(得分:0)

使用此:

await Task.Delay(5000);