I have two thread which start running When user select play button. But when use select Pause or Resume button my UI hangs because of Thread.Join().
Below is code, I am looking for some alternative to overcome this. I already tried with Invoke but it's not working even with this approach my UI freeze the moment I call Thread methods.
ThreadStart m_executeThreadStart;
Thread m_executeThread;
//user Selected Start Button
private void Start()
{
m_executeThreadStart = new ThreadStart(method1);
m_executeThread = new Thread(m_executeThreadStart);
m_executeThread.Name = "ExecuteTestSession";
m_executeThread.IsBackground = true;
m_executeThread.Start();
// Start the asynchronous operation.
// InitializeBackgroundWorker();
// backgroundWorker1.RunWorkerAsync();
//Creating result sync thread
ThreadStart m_resultSyncThreadStart = new ThreadStart(method2);
Thread m_resultSyncThread = new Thread(m_resultSyncThreadStart);
m_resultSyncThread.Name = "SyncResultDatabase";
m_resultSyncThread.Start();
}
private void method1()
{
//do some work
//read data from OPC sever (device)
}
private void method2()
{
//do some work
//updated database accordingly method 1 data
}
//user Press Pause button
public void Suspend()
{
//do work
m_executeThread.Join();
//do work
}
//user Press Resume button
public void Resume()
{
//do work
m_executeThread.Join();
//do work
}