第一次写多线程的程序,运行时异常,前辈们进来看看

第一次写多线程的程序,运行时错误,前辈们进来看看
原来有个ADO访问数据库模块程序,我想用多线程测试一下看看该程序是否线程安全的,编译和连接没问题,但是运行时出错,说某指令引用的某块内存不能为 "written "   下面是代码:

CRITICAL_SECTION   CriticalSection;

DWORD       WINAPI   mythread(void   *p)
{  
    EnterCriticalSection(&CriticalSection);  
   
    int   tvalue=0;

    Initfunction();//初始化,读取服务器配置信息

    MyConnectDB();//连接数据库

    INFO1     tempArray1[MAX];

    INFO2       tempArray2[MAX];

    tvalue=Getinfor1( "TTT ",0,tempArray1);

    tvalue=Getinfor2( "YYY ",0,tempArray2);

    LeaveCriticalSection(&CriticalSection);

    return   0;    
}


int   main()
{  
 
    HANDLE     handle[2];
 
    DWORD       dw[2];


    InitializeCriticalSection(&CriticalSection);//初始化临界区

    handle[0]=CreateThread(NULL,0,mythread,NULL,0,&dw[0]);    

    handle[1]=CreateThread(NULL,0,mythread,NULL,0,&dw[1]);

    CloseHandle(handle[0]);

    CloseHandle(handle[1]);
 
    DeleteCriticalSection(&CriticalSection);

    return   0;
   
}
设置断点看了一下,好象到Initfunction();这里就出错了,
会是什么问题呢,小弟刚接触多线程,请多多指教

------解决方案--------------------
看看Initfuncton()里的哪一句话错了不就知道了吗?
------解决方案--------------------
设断点,单步调试下,看看到底是运行到哪一句出现了问题
------解决方案--------------------
呵呵,你为什么不在debug模式下调试一下呢
你的ReadConfigInfo()中有那么多m_XXXXXX,这些变量你都保证在线程中有访问的权限吗?
或许你访问的仅仅是一些空的对象呢.
还有:MyConnectDB()是怎么写的呢?
------解决方案--------------------
main函数直接就退出了,criticalSection也释放了。
你应该等两个线程退出再执行释放criticalSection及后面的代码