Hi,

I'm trying to figure out how to use CCriticalSection. I have a worker thread using AfxBeginThread that continuously adds values to a CArray in one of my classes:

void CMyClass::Function_Called_In_Thread()
{
int Value = ...;

MyArray.Add(Value);
}

In the meantime, the user interface visualizes the data on screen (using a timer set every 40 ms) using:

void CMyClass::Function_For_Screen()
{
MyCriticalSection.Lock();

Show_On_Screen(MyArray[i]);

MyCriticalSection.Unlock();
}

This is how I use the critical section. I've tried also to use critical section additionally here:


void CMyClass::Function_Called_In_Thread()
{
MyCriticalSection.Lock();

int Value = ...;

MyArray.Add(Value);

MyCriticalSection.Unlock();
}

In the latter case however, nothing gets showed on screen. If I don't do this however, the program still crashes at times in the function for the screen when trying to access my array at a certain position. What is the correct way to use CCriticalSection such that the data gets displayed on screen correctly and the program doesn't crash?