Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting Cross-thread operation not valid [duplicate]

Possible Duplicate:
Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on

public void CheckUnusedTabs(string strTabToRemove)
{ 
    TabPage tp = TaskBarRef.tabControl1.TabPages[strTabToRemove];
    tp.Controls.Remove(this);
    TaskBarRef.tabControl1.TabPages.Remove(tp);
} 

I am trying to close a tab in the tabcontrol of windows application using the above code and i encountered the error:

Cross-thread operation not valid.

How to solve this ?

like image 510
Anuya Avatar asked Oct 06 '09 06:10

Anuya


1 Answers

You can only make changes to WinForm controls from the master thread. You need to check whether InvokeRequired is true on the control and then Invoke the method as needed.

You can do something like this to make it work:

public void CheckUnusedTabs(string strTabToRemove)
{ 
    if (TaskBarRef.tabControl1.InvokeRequired)
    {
        TaskBarRef.tabControl1.Invoke(new Action<string>(CheckUnusedTabs), strTabToRemove);
        return;
    }      

    TabPage tp = TaskBarRef.tabControl1.TabPages[strTabToRemove];
    tp.Controls.Remove(this);
    TaskBarRef.tabControl1.TabPages.Remove(tp);
}
like image 198
JDunkerley Avatar answered Oct 17 '22 23:10

JDunkerley