1.多一个线程就是多一个执行路线,你的问题并不复杂,想用UI还是Worker线程完全自便
2.在线程里操纵COM与在其他的地方有差别吗?没有.你既然想到了这个方案,也是很可行的呀.
2.在线程里操纵COM与在其他的地方有差别吗?没有.你既然想到了这个方案,也是很可行的呀.
解决方案 »
- MFC edit control的auto VScroll 和 Horizontal scroll无法更改
- 请问,如何检测是否存在未分区的磁盘空间??
- 关于一个从VCKBASE上下载的一个类CoolTabCtrl的问题
- VS2005关于combo控件的小问题
- 问大家一个关于动态创建控件的问题!
- 最简单的UDP编程的小问题-WINSOCKET
- 如何将Dialog和一些其他资源放到Dll中,然后在应用程序中调用?
- 程序退出时杀不死该进程,CPU占用率高达99%。原因在哪?
- 请问哪里有VC6英文版下载?实在没有中文版也行,要求速度能达到50K/S,我的是ADSL。谢谢
- 服务器和网络开发 用MFC多吗?
- about DDX
- 关于MFC编程中的内存泄露问题?急请大虾帮忙!
1) UI线程比WORKER线程要复杂一些
2) 由于UI线程自动产生一个消息循环,所以可以象窗口一样按照消息驱动的思想工作;WORKER线程的工作方式更象DOS的程序,需要自己写一个大的LOOP
3) 线程和窗口的通信方式建议采用消息更加自然
4) xyzboat说的没错:"在线程里操纵COM与在其他的地方有差别吗?没有."
CoInit...();
IRtdxExtPtr *p = new IRtdxExtPtr;
some other operation....
p.Release();
if (p) delete p; //这里出了错误
...
CoUninit...();
我的代码如下:
UINT RSReDrawThreadProc(LPVOID lpParam)
{ RS_REDRAW_INFO *lpRSRedrawThreadInfo = (RS_REDRAW_INFO *)lpParam;
short int samples[SAMPLE_SIZE];
char tmpStr[20];
while(1)
{//redraw transmitted signal chart
m_eRSRedraw.ResetEvent();
WaitForSingleObject(m_eReceive,INFINITE);//received compelety
for(int i=0;i<(SAMPLE_SIZE);i++)
{
samples[i] = *(lpRSRedrawThreadInfo->m_pSamples+i);
}
m_eRSRedraw.SetEvent();//release TSRedraw handle
for(i=0;i<SAMPLE_SIZE;i++)
{
_itoa(samples[i],tmpStr,10);
lpRSRedrawThreadInfo->m_pChart->SetRow(i+1);
lpRSRedrawThreadInfo->m_pChart->SetData(tmpStr);
}
if(m_bExitAllThread)
break;
}
AfxEndThread(0);
return 0;
}
能找出是什么原因吗?
怎么做比较好?