Возможно, что Clipboard.GetDataObject();
вернет нулевую ссылку, а затем в самой последней строке вы попытаетесь получить доступ к ее члену
txtdocument.Text = Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();
В любом случае, просто как предложение, почему вы не заменяете последнюю строку
txtdocument.Text = Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();
с этим:
txtdocument.Text = data.GetData(DataFormats.Text).ToString();
РЕДАКТИРОВАТЬ: проверьте, является ли одна из ваших переменных oDoc, txtDocument или data нулевой.
НОВОЕ РЕДАКТИРОВАНИЕ:
Thread tempThread = new Thread(new ThreadStart(threadstuff))
tempThread.SetApartmentState(System.Threading.ApartmentState.STA);
tempThread.Start();