| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 991 人关注过本帖
标题:求例子 :怎样用MFC编程实现一个程序同时执行多个相同任务(批量处理)?
只看楼主 加入收藏
南庭
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-5-9
收藏
得分:0 
CString  fname[3000];
CString  name[1024] ;
int j1 ;
int nIndex = 0;
void CDisposeXJXDlg::OnBtnSelSrcFile()
{
    // TODO: Add your control notification handler code here


    CFileDialog dlg(TRUE, NULL, NULL ,OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT
        |OFN_ALLOWMULTISELECT,"(*.fbd) | *.fbd||",AfxGetMainWnd());

    TCHAR* pszFile =new TCHAR[MAX_PATH];
    memset(pszFile,0,sizeof(TCHAR)*MAX_PATH);

    dlg.m_ofn.lpstrFile = pszFile ;


    if(IDOK==dlg.DoModal())
    {

        int i = 0 ;
        POSITION pos ;
        //把起始位置赋给pos

        pos = dlg.GetStartPosition();
        //把打开的多个文件名赋给fname数组
        while(pos!=NULL)
        {
            fname[i] = dlg.GetNextPathName(pos);
            
            name[i] = fname[i].Right(fname[i].GetLength()-fname[i].ReverseFind('\\')-1);
        
            m_ListOutInfo.AddString(name[i]);
        
            i++ ;
        }
    }
}

int t=0 ;
int tt = 0 ;
int TheradsCount = 0;
int j2 = 0;
CWinThread* pThread[MAX_THREADS];
void CDisposeXJXDlg::OnBtnTypeset()
{

    GetDlgItem(IDC_BTN_TYPESET)->EnableWindow(FALSE);


    TheradsCount = m_ListOutInfo.GetCount();

    j2 = TheradsCount ;

    for(int m1=0 ;j2<MAX_THREADS? m1<j2 :m1<MAX_THREADS ;m1++)
    {
         pThread[m1] =AfxBeginThread(CDisposeXJXDlg::ThreadFun,this,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);
        
        pThread[m1]->ResumeThread();
    }
}

UINT CDisposeXJXDlg::ThreadFun(LPVOID pParam)
{
    CDisposeXJXDlg* dlg=(CDisposeXJXDlg*)pParam;

    WaitForSingleObject(semaphoreWrite.m_hObject,INFINITE);
   
    dlg->m_strFbdPath = fname[t];
    dlg->StartDispose(fname[t]);
    t++ ;
    CloseHandle(pThread[tt]);
    tt++ ;

    ReleaseSemaphore(semaphoreWrite.m_hObject,1,NULL);
    CloseHandle(pThread[tt]);
    tt++ ;
    return 0;
}
这是我自己写的,在MFC对话框里添加了一个列表框,打开多个文本然后点击按钮执行OnBtnTypeset()函数,最后想通过创建多个线程,同时调用StartDispose(fname[t])来处理多个文本,求大神们给指点,真心求教....谢谢了!
2014-03-03 20:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
用一个for 逐个处理不行吗  就是先处理文件1  然后紧跟着处理文件2.。。。。。。。。

多线程也没有想象中那么好处理

DO IT YOURSELF !
2014-03-03 20:42
南庭
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-5-9
收藏
得分:0 
回复 12楼 wp231957
任务要求啊,没办法,求解,而且你说的逐个处理也没实现,第二次的时候运行到中间就不动了,也不卡死
2014-03-04 08:04
快速回复:求例子 :怎样用MFC编程实现一个程序同时执行多个相同任务(批量处理) ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012693 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved