I realise this topic has been covered before, but i am struggling to grasp the concept of delegates and stuff. my program has a multi lines textbox, and a function (which runs on a different thread) that runs in a loop continuesly receiving data from a socket. this data comes in the form of a string, and it is made into a system.string, and is then appended to the textbox the problem i am having is that the textbox is created on thread1, where has the function is on thread2. trying to access the textbox from thread 2 makes baby jesus cry. I understand that this is where i need to use the invoke methods, and delegate functions, but as to implimenting these processing to solve my delema is still beyond my grasp. i can show you what i have so far in terms of relevant code Code: public ref class Form1 : public System::Windows::Forms::Form { public: delegate void OutPutBoxAppend(System::String^ ms); OutPutBoxAppend^ myDelegate; Form1(void) { CONNECTED = false; connectSockets(); myDelegate = gcnew OutPutBoxAppend(this, &Form1::OutPutBoxWork); Application::Run(gcnew loginForm(commandSocket)); InitializeComponent(); Sleep(10); Thread^ oThread = gcnew Thread(gcnew ParameterizedThreadStart(Form1::ThreadProc1)); oThread->Start(this); // //TODO: Add the constructor code here // } void OutPutBoxWork(System::String^ ms) { this->ouputBox->AppendText(ms); } /////////////////////////////////////////////////////////////////////////////////////////////////////--code gap static void ThreadProc1(System::Object ^obj) { Form1^ ob = (Form1^) obj; for(;; ) { string recvStr; if((recvStr = ob->recvData(ob->getMonSocket())) == "") { MessageBox::Show(L"could not receive stream"); break; }else{ using namespace System::Runtime::InteropServices; recvStr.append("\r\n"); System::String^ ms; ms = Marshal::PtrToStringAnsi(static_cast(const_cast(recvStr.c_str()))); if(ob->ouputBox->InvokeRequired) { OutPutBoxAppend ^d = gcnew OutPutBoxAppend(^ms); ob->Invoke(ob->myDelegate); }else{ ob->ouputBox->AppendText(ms); } } } } Edit: This obviously doesnt build, i was trying to addapt one of the examples givin on the msdn website.