创建了一个线程,却不执行,不知道怎么回事.

kbwan 2004-07-30 08:20:35
m_hThread = CreateThread(NULL, 0, RevThread, this, 0, &m_dwThreadID );

if( NULL == m_hThread )
{
iError = GetLastError();
return;
}
通过调试得到m_hTread的值是0xcccccccc,不为0,说明成功.
但RevThread这个函数却没有被执行.
怎么回事呢?
DWORD WINAPI RevThread(LPVOID lpParam)
{
MessageBox(NULL,"I Receive something!","hello",MB_OK);
.................
}
这个东西在另外一个项目中正常.
太怪了,其它有什么东西影响到呢?
...全文
334 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqlhj 2004-08-01
  • 打赏
  • 举报
回复
楼主不要自责,其实我们只是有时经验不足。
要是在国内有一套全中文的MSDN,我觉得相当多人的水平都会很高的。
可惜,这好象是不可能的。
jiaxinpig 2004-07-31
  • 打赏
  • 举报
回复
怎么发帖子啊,我不会,只有在回复里问大家了。谢谢!
kbwan 2004-07-31
  • 打赏
  • 举报
回复
我把完整的代码传上一个地方了,大家看看
http://goboyy.51.net/FileSyncClient.rar
kbwan 2004-07-31
  • 打赏
  • 举报
回复
告诉我,为什么我这么蠢.
抄来的代码.
kbwan 2004-07-31
  • 打赏
  • 举报
回复
静态的,
我已贴有完整的项目文件.
http://goboyy.51.net/FileSyncClient.rar
Atry 2004-07-31
  • 打赏
  • 举报
回复
在Debug版本中,任何变量都会自动初始化成0xccccccc,所以实际上就是没有初始化。
所以……你的代码根本没有执行
Zark 2004-07-31
  • 打赏
  • 举报
回复
从第四个参数是this可以看出,这个thread是在类对象中被fork出来的,如果是类的成员函数做为线程函数,那个类成员函数必须是static的.

没有去看你的原始代码,以上是猜的,猜不对不要见怪.
elssann 2004-07-31
  • 打赏
  • 举报
回复
没有初始化的时候都是0xccccccc

那一句是画蛇添足。。。
hopen 2004-07-31
  • 打赏
  • 举报
回复
楼主,学习了一下你的代码,谢了

你的创建线程根本没有执行,因为

m_hThread 没有符值所以不一定为NULL.所以对话框的构造函数中
加上m_hThread = NULL,就行了
0xccccccc表示没有值的意思
或者把if( NULL == m_hThread )去掉
就可以了
kbwan 2004-07-31
  • 打赏
  • 举报
回复
普通的我也会用,只是用在这个项目就出错了.
mynamelj 2004-07-31
  • 打赏
  • 举报
回复
////////////////////////////////////////////////////////////
//一个简单的例子:
//如何创建线程
#include <windows.h>
#include <conio.h>

DWORD WINAPI ThreadFunc( LPVOID lpParam )
{
char szMsg[80];

wsprintf( szMsg, "Parameter = %d.", *(DWORD*)lpParam );
MessageBox( NULL, szMsg, "ThreadFunc", MB_OK );

return 0;
}

VOID main( VOID )
{
DWORD dwThreadId, dwThrdParam = 1;
HANDLE hThread;
char szMsg[80];

hThread = CreateThread(
NULL, // default security attributes
0, // use default stack size
ThreadFunc, // thread function
&dwThrdParam, // argument to thread function
0, // use default creation flags
&dwThreadId); // returns the thread identifier

// Check the return value for success.

if (hThread == NULL)
{
wsprintf( szMsg, "CreateThread failed." );
MessageBox( NULL, szMsg, "main", MB_OK );
}
else
{
_getch();
CloseHandle( hThread );
}
}
footway 2004-07-30
  • 打赏
  • 举报
回复
给出充分的代码才能分析啊。
kvw3000 2004-07-30
  • 打赏
  • 举报
回复
pthd->handle = CreateThread( NULL, NULL,ListenThread, (void*)pmdsock, NULL,&pthd->tid);
....
unsigned long WINAPI ListenThread(LPVOID lpParam)
{
....
}
vericky 2004-07-30
  • 打赏
  • 举报
回复
你在CreateThread的RecvThread前面加个(LPTHREAD_START_ROUTINE)试试
vericky 2004-07-30
  • 打赏
  • 举报
回复
0xcccccccc ?看上去象是未赋值啊,一般还没赋值的变量都是这个值,呵呵
kbwan 2004-07-30
  • 打赏
  • 举报
回复
帮帮忙呀

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧