Как проверить, происходит ли уже событие клика C# Winforms - PullRequest
0 голосов
/ 31 января 2020

У меня есть такой метод:

private async void BtnGivePermit_Click(object sender, EventArgs e)
{
    //some code here
}

И я пытаюсь добавить кнопку для отмены, и там я хотел проверить, не происходит ли какое-либо другое событие щелчка. Как я могу сделать это в C#?

1 Ответ

0 голосов
/ 31 января 2020

Как и предполагал A sh, вам может потребоваться логическое значение, подобное этому:

bool isGivePermitProcessing = false;
private void BtnGivePermit_Click(object sender, EventArgs e)
{
    isGivePermitProcessing = true;
    try {
        ...
    } finally {
        isGivePermitProcessing = false;
    }
}

Это даст вам определенное представление о том, обрабатывает ли функция в настоящее время или нет.

Блок try-finally гарантирует, что ни одно исключение не приведет к тому, что логическое значение isGivePermitProcessing станет неопределенно истинным.


Расширяя вышеупомянутое понятие в предложении Джими, вы также можете просто отключить кнопку следующим образом:

private void BtnGivePermit_Click(object sender, EventArgs e)
{
    BtnGivePermit.Enabled = false;
    try {
        ...
    } finally {
        BtnGivePermit.Enabled = true;
    }
}

Это также даст вам определенное представление о том, обрабатывает ли функция в настоящее время или нет, при этом дополнительно предотвращая нажатие кнопки во время обработки предыдущего щелчка.


Если вы собираетесь сделать кнопку отмены для асинхронных операций, вам может понадобиться тип CancellationToken.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...