异步等待与timer.Tick

时间:2014-02-19 08:34:12

标签: c# events timer async-await

我目前正在使用异步等待扩展WinForms应用程序。

MainForm正在等待一些条形码扫描输入并对MainForm_KeyDown事件作出反应。

为了避免用户在键盘上键入一些废话并使实际扫描失败,我实现了一个Timer,它可以清除所有300ms的ScanInput字符串。

我想展示一些实施细节:

    public SomeCtor()
    {
        _timer = new Timer(){ Interval = 300 };

        _timer.Tick += timer_Tick;
    }

    void timer_Tick(object sender, EventArgs e)
    {
        ScanInput = String.Empty;
    }

    private async void MainForm_KeyDown(object sender, KeyEventArgs e)
    {
        switch (e.KeyCode)
        {
            case Keys.Enter:
                await OnScanBarcodeAsync(ScanInput);
                break;
        }

        _timer.Stop();
        _timer.Start();
    }

现在我的问题是: 是否有可能我会得到异步等待由Timer引起的这种实现的问题?应用程序的可见性非常糟糕。

0 个答案:

没有答案