action being performed on this control is being called from the wrong thread csharp

Code Example - action being performed on this control is being called from the wrong thread csharp

                
                        public delegate void FunctionDelegate();

treeViewControl.BeginInvoke(new FunctionDelegate(TreeViewBug));

private void TreeViewBug() {
	Random rand = new Random();
    TreeNode node = treeViewControl.Nodes.Add("Parent");

	for (int i = 0 ; i < 10000 ; i++ ) // some kind of long operation
        node.Nodes.Add(rand.Next().ToString());
}