他スレッドからコントロールを扱う方法は

private delegate void hoge();
//スレッド内部の処理
//Form form1 = new Form();
form1.BeginInvoke(new hoge(form1.Refresh), new object[]{});

こんな感じで良いのでしょうか?
処理したいメソッド自体はコントロールのインスタンスを直接しても大丈夫ですか?