开发者

Threading: Setting checkbox's visibility

开发者 https://www.devze.com 2022-12-24 16:48 出处:网络
In a C#.NET windows application (winforms) I set the visibility of the checkbox to false: checkBoxLaunch.Visible = true;

In a C#.NET windows application (winforms) I set the visibility of the checkbox to false:

checkBoxLaunch.Visible = true;

I started a thread.

Thread th = new Thread(new ThreadStart(PerformAction));
th.IsBackground = true;
th.Start();
开发者_StackOverflow中文版

The thread performs some stuff and sets the visibility to true:

private void PerformAction()
{
/*
.
.// some actions.
*/
    checkBoxLaunch.Visible = true;

}

After the thread finishes its task, the checkbox is not visible to me.

What am I missing?


You shouldn't make UI changes within a non-UI thread. Use Control.Invoke, Control.BeginInvoke or BackgroundWorker to marshal the call back to the UI thread. For example (assuming C# 3):

private void PerformAction()
{
/*
.
.// some actions.
*/
    MethodInvoker action = () => checkBoxLaunch.Visible = true;
    checkBoxLaunch.BeginInvoke(action);
}

Search for any of Control.Invoke, Control.BeginInvoke or BackgroundWorker to find hundreds of articles about this.

0

精彩评论

暂无评论...
验证码 换一张
取 消