当前位置 : 主页 > 编程语言 > c语言 >

c# – 多次单击按钮时如何防止挂起应用程序?

来源:互联网 收集:自由互联 发布时间:2021-06-25
我有一个应用程序,用户可以单击扫描按钮扫描图像以在应用程序中预览.当用户点击时,通常会显示“准备扫描”消息,并在扫描完成100%时消失. 扫描工作正常.问题是,如果我在执行它的
我有一个应用程序,用户可以单击扫描按钮扫描图像以在应用程序中预览.当用户点击时,通常会显示“准备扫描”消息,并在扫描完成100%时消失.

扫描工作正常.问题是,如果我在执行它的过程中多次按下扫描按钮进行压力测试,应用程序完全挂起,消息就会停留在那里,我不得不重新启动整个应用程序.

代码:这只是一小部分

private void ScanStripButton_Click(object sender, EventArgs e)
{
    if (SCAN_INTO_BATCH)
    {
        GENERATE_BATCH_FOLDER = true;
        StartTwainScan();
    }
}

关于如何防止这个问题的任何想法?
感谢帮助

编辑:

public void StartTwainScan()
{
    Boolean EnableUI = false;
    Boolean ADF = false;
    Boolean EnableDuplex = false;

    if (Properties.Settings.Default.TwainShow.Equals("1"))
    {
        EnableUI = true;
    }

    if (Properties.Settings.Default.ScanType.Equals("2"))
    {
        ADF = true;
    }

    if (Properties.Settings.Default.DuplexEnable.Equals("1"))
    {
        EnableDuplex = true;
    }

    var rs = new ResolutionSettings
    {
        Dpi = GetResolution(),
        ColourSetting = GetColorType()
    };

    var pg = new PageSettings()
    {
        Size = GetPageSize()
    };


    var settings = new ScanSettings
    {
        UseDocumentFeeder = ADF,
        ShowTwainUI = EnableUI,
        ShowProgressIndicatorUI = true,
        UseDuplex = EnableDuplex,
        Resolution = rs,
        Page = pg
    };

    try
    {
        TwainHandler.StartScanning(settings);
    }
    catch (TwainException ex)
    {
        MessageBox.Show(ex.Message);
        //Enabled = true;
        //BringToFront();
    }
}
这不是正确的答案,但是您没有显示足够的代码来为您提供正确的代码.它应该指向正确的方向.

private void ScanStripButton_Click(object sender, EventArgs e)
{
    ScanStripButton.Enabled = false;
    if (SCAN_INTO_BATCH)
    {
        GENERATE_BATCH_FOLDER = true;
        StartTwainScan();
    }
    ScanStripButton.Enabled = true;
}

基本上,您在扫描开始时禁用按钮,并在完成时启用它.

网友评论