System.InvalidOperationException: DragDrop registration did not succeed. ---> System.Threading.ThreadStateException:
What does this except
By far the easiest way is:
private void DoSomethingOnGui()
{
    if (this.InvokeRequired)
    {
        this.Invoke((MethodInvoker)delegate
        {
            Safe_DoSomethingOnGui();
        });
    }
    else
    {
        Safe_DoSomethingOnGui();
    }
}
private void Safe_DoSomethingOnGui()
{
    // Do whatever you want with the GUI
}
You can even pass things along no problem:
private void DoSomethingOnGui(object o)
{
    if (this.InvokeRequired)
    {
        this.Invoke((MethodInvoker)delegate
        {
            Safe_DoSomethingOnGui(o);
        });
    }
    else
    {
        Safe_DoSomethingOnGui(o);
    }
}
private void Safe_DoSomethingOnGui(object o)
{
    // Do whatever you want with the GUI and o
}