一个主线程,一个辅助线程(worker threads)。
主线程中定义了一个全局结构:
struct ThreadParam
{
HWND m_hWnd;
CString m_string1;
CString m_string2;
}
主线程中将这个结构变量传递给辅助线程:
ThreadParam pParam;
//为pParam各成员变量赋值
...
//启动辅助线程
AfxBeginThread(MyThreadProc,&pParam,THREAD_PRIORITY_NORMAL);
...
辅助线程中:
UINT MyThreadProc(LPVOID pParam) {
ThreadParam *pThreadParam=(ThreadParam *)pParam;
...
return 0;
}
调试发现,pParam中的两个CString变量没有正确传递过来,而窗口句柄变量正确传递。
我试过在结构中使用其他类型的变量,如int, char,都没问题。那么是否在线程中不能传递CString类型变量?
主线程中定义了一个全局结构:
struct ThreadParam
{
HWND m_hWnd;
CString m_string1;
CString m_string2;
}
主线程中将这个结构变量传递给辅助线程:
ThreadParam pParam;
//为pParam各成员变量赋值
...
//启动辅助线程
AfxBeginThread(MyThreadProc,&pParam,THREAD_PRIORITY_NORMAL);
...
辅助线程中:
UINT MyThreadProc(LPVOID pParam) {
ThreadParam *pThreadParam=(ThreadParam *)pParam;
...
return 0;
}
调试发现,pParam中的两个CString变量没有正确传递过来,而窗口句柄变量正确传递。
我试过在结构中使用其他类型的变量,如int, char,都没问题。那么是否在线程中不能传递CString类型变量?
解决方案 »
- MFC主对话框按钮CLICK呼叫另外的对话框的问题
- winsoket 当关闭客户端或关闭服务器的时候..客户端会产生内存错误
- 怎样检测鼠标停止运动了...难
- error C2664: 'strcpy' : cannot convert parameter 1 from 'class CString' to 'char *'
- 几个模糊的地方
- 那里有《windows网络编程》--中文版--下啊?
- pb,vb,delphi的详解
- OpenGL 曲线逼近
- 请教SNMP问题:我在UDP161口收到了Get请求的数据包,如何编程发送GetResponse响应?
- BEGIN_INTERFACE_MAP 如何正确来使用
- vs.net是不是有bug
- 如何同时打开多个文件
CString值都能正常得传过来呀?看你的过程看不出什么问题,我
建议还是检查检查程序的其他部分吧,是不是在中间的什么时候
把结构体里面的值改过呀?
Debug这两个CString 的值是Error:expression cannot be evaluated.
znormal你也是这么做的么?这就奇怪了。
另外,如果我在主线程中直接用函数调用的方式:
MyThreadProc(&Param);
这样在MyThreadProc中得到的值是正确的。
GlobalGetAtomName
GlobalDeleteAtom