[我正在使用xamarin开发一个android应用程序,而我试图做的事情非常简单:单击一个按钮,将其禁用1秒钟。
这是我放在一起的代码的相关部分:
protected override void OnCreate(Bundle savedInstanceState)
{
//...
sendShortDataButton.Click += (object sender, EventArgs e) => {
Task.Run(() => DisableButtonFor());
};
//...
private async Task DisableButtonFor()
{
sendShortDataButton.Enabled = false; //<------
await Task.Delay(1000);
sendShortDataButton.Enabled = true;
}
}
这里的问题是,通过调试应用程序,代码仅运行到箭头所指向的所有内容被忽略的位置。在该应用程序上,该按钮实际上已被禁用,因此我不确定是否出了问题。
谢谢!
尝试一下:
sendShortDataButton.Click += async (sender, e) =>
{
var button = (Button)sender;
button.Enabled = false;
await Task.Delay(1000);
button.Enabled = true;
};
如果您仅有的异步工作是等待Task.Run
,则您不需要Task.Delay
。但是,如果您还有更多异步工作要做,那么最好仅将Task.Run
用于此工作:
sendShortDataButton.Click += async (sender, e) =>
{
var button = (Button)sender;
button.Enabled = false;
await Task.Run(async () =>
{
await Task.Delay(1000); // Simulate async work
});
button.Enabled = true;
};