I'm having a blocking issue in my WinForm app, so I implemented a thread but it is still blocking. Here is the relevant code:
Code:
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				  
				

				 Thread^ newLogThread = gcnew Thread(gcnew ParameterizedThreadStart(&log));
				 this->label2->Text = "Logging";     
				 newLogThread->Start(this);
				 
			
			
		}
here is the log method:
Code:
static void log(System::Object ^obj)
	{

	SafeThread1(obj);


	}
The SafeThread method is where it is blocking
Code:
static void SafeThread1(System::Object ^obj){

			Form1 ^ob = (Form1^) obj;
			if( ob->button1->InvokeRequired){
				logThread ^d = gcnew logThread(SafeThread1);
				ob->Invoke(d,gcnew array<System::Object^>{ob});				
			}
			else{
				
				while (ob->connect== EDK_OK) {

					ob->state = EE_EngineGetNextEvent(ob->eEvent);

					// New event needs to be handled
					if (ob->state == EDK_OK) {

						EE_Event_t eventType = EE_EmoEngineEventGetType(ob->eEvent);
						EE_EmoEngineEventGetUserId(ob->eEvent, &userID);

						// Log the EmoState if it has been updated
						if (eventType == EE_EmoStateUpdated) {

							EE_EmoEngineEventGetEmoState(ob->eEvent, ob->eState);
							const float timestamp = ES_GetTimeFromStart(ob->eState);

							ob->label2->Text=" New EmoState from user "+timestamp+userID;
					
							ob->logEmoStateTXT(userID, ob->eState, writeHeader);
							//writeHeader = false;
						}
					}else if (ob->state != EDK_NO_EVENT) {
						ob->label2->Text = "Internal error in Emotiv Engine!";
						break;
					}

				Thread::Sleep(1);
				}

		
			}
	
	}
Any help getting this not to block is greatly appreciated.