Friday 27 July 2018

c# - Getting Cross-thread operation not valid












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 ?


Answer



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(CheckUnusedTabs), strTabToRemove);
return;
}

TabPage tp = TaskBarRef.tabControl1.TabPages[strTabToRemove];
tp.Controls.Remove(this);

TaskBarRef.tabControl1.TabPages.Remove(tp);
}

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...