| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 604 人关注过本帖
标题:线程问题,创建多个线程后,主线程(winapp)为什么没有响应了
只看楼主 加入收藏
miller0113
Rank: 2
等 级:论坛游民
帖 子:8
专家分:22
注 册:2013-6-24
结帖率:100%
收藏
 问题点数:0 回复次数:0 
线程问题,创建多个线程后,主线程(winapp)为什么没有响应了
vc建立了一个单文档视图结构工程,之后在CView类里面的菜单响应函数里面创建了几个线程(c代码创建的线程),为什么创建线程并启动之后,主程序窗体就没有反应了(窗体切换不了,不显示),只有等结束了创建的几个子线程之后才能切换回来并显示窗体和响应消息??请高手帮忙,多谢了!!!
void CstView::OnEditTest() //我写的通过菜单响应的函数,在该函数下面创建了三个线程(其实是想使用atk开源包下面的三个语音识别模块ASource、ACode、ARec)
{
    .....
    ain=new ASource("AIn",&auChan);//函数里面使用 HCreateThread()创建线程
    acode=new ACode("ACode",&auChan,&feChan);//函数里面使用 HCreateThread()创建线程
    arec=new ARec("ARec",&feChan,&ansChan,rman,0);//函数里面使用 HCreateThread()创建线程
    .....
    ain->Start();
    acode->Start();
    arec->Start();
}

HThread HCreateThread(const char *name, int prBufLines, HPriority pr,
              TASKTYPE (TASKMOD *task)(void *), void *arg){
  static unsigned int threadIDCounter = 1;
  HThreadT thread;
  HThread t; int i;
  ........
  HTLock();
  t = (HThread)malloc(sizeof(HThreadRec));
  t->name = CopyName(name);
  t->status = THREAD_INITIAL;
  if (mode>HT_NOMONITOR){
    t->info = (HThreadInfo *)malloc(sizeof(HThreadInfo));
    t->info->inLock = 0;  t->info->inSignal = 0;
    t->info->returnStatus = 0;
    InitThreadPrBuf(&(t->info->prBuf),prBufLines);
  }
  t->next = threadList; threadList = t; ++numThreadRecords;
#ifdef WIN32
  thread = (HANDLE)_beginthreadex(NULL,0,task,arg,0,&threadID);
  t->thread = thread;
  t->id = threadID;
  if (thread==NULL)
    HTError("HCreateThread: Cannot create thread",GetLastError());
  switch(pr){
  case HPRIO_HIGH:
    winprio = THREAD_PRIORITY_HIGHEST;
    break;
  case HPRIO_LOW:
    winprio = THREAD_PRIORITY_LOWEST;
    break;
  case HPRIO_NORM:
    winprio = THREAD_PRIORITY_NORMAL;
    break;
  default:
    HTError("HCreateThread: Bad priority",pr);
  }
  if (SetThreadPriority(thread,winprio)==0)
    HTError("HCreateThread: cannot set priority",GetLastError());
#endif


}
现在的状态是,点击该菜单按钮后,运行出来ASource、ACode、ARec的三个窗体,三个窗体可以正常运行,但是我的单文档视图窗体就切换不过来了,也不响应AREC线程发送给它的消息了,请高手帮忙分析一下什么原因,如何解决?我要实现的是主窗体和三个线程的窗体并行运行,并且能够互发消息。
搜索更多相关主题的帖子: 结构工程 语音识别 主程序 
2013-11-25 13:56
快速回复:线程问题,创建多个线程后,主线程(winapp)为什么没有响应了
数据加载中...
 
   



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

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