在C#.NET windows应用程序(winforms)中,我将复选框的可见性设置为false:
checkBoxLaunch.Visible = true;
我开始了一个帖子。
Thread th = new Thread(new ThreadStart(PerformAction));
th.IsBackground = true;
th.Start();
线程执行一些操作并将可见性设置为true:
private void PerformAction()
{
/*
.
.// some actions.
*/
checkBoxLaunch.Visible = true;
}
线程完成任务后,我无法看到该复选框。
我错过了什么?
答案 0 :(得分:5)
您不应在非UI线程中进行UI更改。使用Control.Invoke
,Control.BeginInvoke
或BackgroundWorker
将回调编组回UI线程。例如(假设C#3):
private void PerformAction()
{
/*
.
.// some actions.
*/
MethodInvoker action = () => checkBoxLaunch.Visible = true;
checkBoxLaunch.BeginInvoke(action);
}
搜索Control.Invoke,Control.BeginInvoke或BackgroundWorker中的任何一个,以查找数百篇有关此内容的文章。