画折线,总出现缺失的景况

画折线,总出现缺失的情况
程序有公共资源
extern CRITICAL_SECTION DrowLock;   //在其他文件里初始化了
float fPointUD[100];
float fPointNS[100];
float fPointWE[100];

在系统的主线程里调用的画图方法
  fmprex->imgUD->Picture = NULL;
EnterCriticalSection(&DrowLock);
//画折线
fmprex->DrowLine(fmprex->imgUD,fPointUD);
//画折线
fmprex->DrowLine(fmprex->imgNS,fPointNS);
//画折线
fmprex->DrowLine(fmprex->imgEW,fPointWE);
LeaveCriticalSection(&DrowLock);


这个是画图方法的实现
 //画布大150*700;以(50,75)为原点,10个点,横坐标间隔为6,纵坐标
 void __fastcall Tfmprex::DrowLine(TImage* ImageX, float fLineData[])
 {
 ImageX->Picture->Assign(NULL);
 ImageX->Canvas->MoveTo(X0, Y0);
 for (int i = 0; i < 100; i++)
 {
 ImageX->Canvas->LineTo(X0 + (i*XSpace) , Y0 - (fLineData[i]*YSpace));
 }

 }
原想是画出的图形是三条线同时画出.

可是实际上的结果是偶尔会正常,总会出现少线,或者某一根短缺的情况
求大神指教
------解决方案--------------------
三条线在一个函数里同时画,而不是用函数画三次