【发布时间】:2015-01-21 02:11:37
【问题描述】:
我正在尝试仅在按钮禁用事件完成时使用 Async 和 Await 来启用任务。
我尝试使用:
protected async void btnStart_Click(object sender, EventArgs e)
{
tskDisabled = DisableButton();
int result = await tskDisabled;
if (result == 1)
FilesCount();
}
private async Task<int> DisableButton()
{
btnStart.Enabled = false;
await Task.Delay(1000);
return 1;
}
我只想在按钮 btnStart 被禁用时启动 FilesCount() 方法。
目前,任务已启动,但按钮仍处于启用状态。
【问题讨论】:
-
通常禁用按钮是一个廉价的操作,
FilesCount可能是一个等待操作。如果一个按钮没有立即被禁用,这意味着一个 UI 线程正忙于做一些应该在另一个线程上完成的事情。 -
button disabled事件是什么意思?我认为你走错路了。为什么您尝试异步禁用按钮?长期运行的东西? -
您在使用 WinForms 吗?
btnStart.Enabled = false;应该同步完成。 referencesource.microsoft.com/#System.Windows.Forms/winforms/… 除非您不在 UI 线程上,在这种情况下...停止。 -
我正在使用 ASP。 NET Web 窗体。对不起,我应该在之前提到过。
标签: .net webforms async-await c#-5.0