| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 991 人关注过本帖
标题:求例子 :怎样用MFC编程实现一个程序同时执行多个相同任务(批量处理)?
取消只看楼主 加入收藏
南庭
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-5-9
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:6 
求例子 :怎样用MFC编程实现一个程序同时执行多个相同任务(批量处理)?
在MFC的列表框内,一次性添加多个要处理的文本的路径,然后根据路径用相同的一个程序同时处理这些文本,求例解?
2014-03-01 20:53
南庭
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-5-9
收藏
得分:0 
可能是我本人表达有点问题 意思是说实现一次性打开多个不同的文本  调用同一函数模块全部进行相同的处理操作 达到批量处理的效果
2014-03-03 09:29
南庭
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-5-9
收藏
得分:0 
回复 3楼 yuccn
有没有实例 参考一下 谢谢!
2014-03-03 09:31
南庭
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-5-9
收藏
得分:0 
回复 7楼 玩出来的代码
抱歉 让你见笑了 第一次做这些东西 我希望做的事就是同一时间内要调用同一函数  如果把一次调用看成一次任务的话 那么达到的效果就是多个任务同时进行 节省时间  希望给与指点 谢谢
2014-03-03 17:22
南庭
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-5-9
收藏
得分:0 
回复 3楼 yuccn
求高手赐教,给点例子,只需要能让多个线程同时调用同一个函数,处理任务的,谢了!
2014-03-03 20:30
南庭
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
南庭
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-5-9
收藏
得分:0 
回复 12楼 wp231957
任务要求啊,没办法,求解,而且你说的逐个处理也没实现,第二次的时候运行到中间就不动了,也不卡死
2014-03-04 08:04
快速回复:求例子 :怎样用MFC编程实现一个程序同时执行多个相同任务(批量处理) ...
数据加载中...
 
   



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

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