我遇到了一个奇怪的问题,当我在为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会启用
的屏幕抓图左图 - 应用程序在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;
}
我在这里缺少什么?