如何检查单击事件是否已在 C# Winforms 中
How to check if a click event is already in process C# Winforms
我有这样的方法:
private async void BtnGivePermit_Click(object sender, EventArgs e)
{
//some code here
}
我正在尝试向“取消”添加一个按钮,我想在其中检查是否有任何其他点击事件未在进行中。我如何在 C# 中做到这一点?
正如 Ash 所建议的那样,您可能想要一个像这样的布尔值:
bool isGivePermitProcessing = false;
private void BtnGivePermit_Click(object sender, EventArgs e)
{
isGivePermitProcessing = true;
try {
...
} finally {
isGivePermitProcessing = false;
}
}
这样可以让您明确了解函数当前是否正在处理中。
try-finally
块确保没有异常会导致 isGivePermitProcessing
布尔值无限期地变为真。
将上述概念扩展到 Jimi 的建议中,您也可以像这样简单地禁用按钮:
private void BtnGivePermit_Click(object sender, EventArgs e)
{
BtnGivePermit.Enabled = false;
try {
...
} finally {
BtnGivePermit.Enabled = true;
}
}
这也会让您明确了解该功能当前是否正在处理,同时还可以防止在已经处理上一次点击的同时点击按钮。
如果您打算为异步操作制作一个取消按钮,您可能需要查看 CancellationToken
类型。
我有这样的方法:
private async void BtnGivePermit_Click(object sender, EventArgs e)
{
//some code here
}
我正在尝试向“取消”添加一个按钮,我想在其中检查是否有任何其他点击事件未在进行中。我如何在 C# 中做到这一点?
正如 Ash 所建议的那样,您可能想要一个像这样的布尔值:
bool isGivePermitProcessing = false;
private void BtnGivePermit_Click(object sender, EventArgs e)
{
isGivePermitProcessing = true;
try {
...
} finally {
isGivePermitProcessing = false;
}
}
这样可以让您明确了解函数当前是否正在处理中。
try-finally
块确保没有异常会导致 isGivePermitProcessing
布尔值无限期地变为真。
将上述概念扩展到 Jimi 的建议中,您也可以像这样简单地禁用按钮:
private void BtnGivePermit_Click(object sender, EventArgs e)
{
BtnGivePermit.Enabled = false;
try {
...
} finally {
BtnGivePermit.Enabled = true;
}
}
这也会让您明确了解该功能当前是否正在处理,同时还可以防止在已经处理上一次点击的同时点击按钮。
如果您打算为异步操作制作一个取消按钮,您可能需要查看 CancellationToken
类型。