本来是单线程读txt的,不知道怎么改成多线程,
1,最好有个完成的,或则类似的例子~
2,AfxBeginThread里第一个参数必须是static吗?
我后来自己乱试的时候发现static里执行别的函数似户有问题
static函数里只能执行static的函数?
3,AfxBeginThread第2个参数给第1个参数传递参数
UINT CThreadDlg::ThreadFunc(LPVOID pParam)
可我想传递多个参数,怎么传啊?可以这样吗?
UINT CThreadDlg::ThreadFunc(CString a,CString b,LPVOID pParam)
问题有点多,不好意思这是我原本单现成的代码:
OnButton1
{
   FILE* fp;
fp=fopen(strdic,"rb"); //读 char *x=new char[100];
char *y=new char[100];
while(!feof(fp))
{
memset(x,0,100);
fgets(x,100,fp);
                        //执行别的函数 .......... }
delete(x);
delete(y); fclose(fp);
}

解决方案 »

  1.   

    OnButton1
    {
    CreateThread(NULL,NULL,ThreadProc,NULL,NULL);
    }
    UINT ThreadProc(LPVOID p)
    {
      FILE* fp;
    fp=fopen(strdic,"rb"); //读char *x=new char[100];
    char *y=new char[100];
    while(!feof(fp))
    {
    memset(x,0,100);
    fgets(x,100,fp);
                            //执行别的函数 ..........}
    delete(x);
    delete(y);fclose(fp);
    }
      

  2.   

    想知道怎么开启线程?
    看MSDN嘛CWinThread* AfxBeginThread(
       AFX_THREADPROC pfnThreadProc,
       LPVOID pParam,
       int nPriority = THREAD_PRIORITY_NORMAL,
       UINT nStackSize = 0,
       DWORD dwCreateFlags = 0,
       LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
    );
    CWinThread* AfxBeginThread(
       CRuntimeClass* pThreadClass,
       int nPriority = THREAD_PRIORITY_NORMAL,
       UINT nStackSize = 0,
       DWORD dwCreateFlags = 0,
       LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
    );例子:
    CWinThread pWinThread = NULL;
    UINT ReadFileThread(LPVOID pParam)
    {...
    }pWinThread = AfxBeginThread(ReadFileThread, &Param, THREAD_PRIORITY_NORMAL, 0, 0, NULL);
      

  3.   

    这个ThreadFunc真是麻烦啊!!!!
    里面执行的函数必须是 static 函数
    而且我原本定义的 CListBox m_list在ThreadFunc里也提示
    must have class/struct/union type
    谁能给个完整的例子吗?
    最好能下载的!!!