运行BackgroundWorker Win2K8时启用按钮

时间:2015-10-20 11:13:46

标签: c# winforms backgroundworker

我遇到了一个奇怪的问题,当我在为Win2K8配置的虚拟机上运行我的C#Windows程序时,按钮会被启用。

我的开发PC是Windows 7.该程序基本上产生一个后台工作线程,以便在用户单击播放按钮时执行一些长时间运行的操作。

在我使用RunWorkerAsync调用启动BackgroundWorker线程之前,我启用并禁用了UI上的一些按钮。

btnBuild.Enabled = false;
btnStop.Enabled = true;
backWorkerScript.RunWorkerAsync(m_oArgs);

当我在我的开发PC(Windows 7)上进行测试时,行为与预期一致,即按钮状态是我所期望的。

但是当我部署相同的WindowsApplication.exe时,按钮 btnBuild会启用

附件是参考app comparison

的屏幕抓图

左图 - 应用程序在Windows 2008上运行, 正确的图像 - 应用程序在Windows 7上运行,

我无法尝试从不同的线程访问UI线程。

我只在OnExecuteComplete事件处理程序中处理的RunWorkerCompleted事件中启用该按钮

private void OnExecuteComplete(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled)
            {
                toolStripStatus.Text = "Task Cancelled.";
            }
                // Check to see if an error occurred in the background process.
            else if (e.Error != null)
            {
                toolStripStatus.Text = "Error";
           }
            else
            {
                //Final Status
                toolStripStatus.Text = "Operation completed successfully.";
            }

            //Change the status of the buttons on the UI accordingly
            btnBuild.Enabled = true;
            btnStop.Enabled = false;
        }

我在这里缺少什么?

0 个答案:

没有答案