我定义了一个线和,然后在一个对话框中调用这个线程,虽然这个线程是一个死偱环,但是由于是线程,应该不影响主程序,现在我一开动这个线程,整个程序就不动了,为什么,大家来帮我看一下好嘛??
//这是我的线程码
DWORD WINAPI Listen()
{
SOCKADDR_IN saClnt;
int saClntLen;
while(1)
{
}
return 0;
}
//这是我的线程调用代码
void AVEDlg::Trans()
{
DWORD idThread;
CreateThread(NULL,0,
(LPTHREAD_START_ROUTINE)Listen(),
(void*)this,0,&idThread);
}
//然后我在程序中产生AVEDlg对话框
AVEDlg* m_dlgAve2;
m_dlgAve2=new AVEDlg();
m_dlgAve2->Trans();
//然后的的程序就不动了。为什么呀??????????????
//这是我的线程码
DWORD WINAPI Listen()
{
SOCKADDR_IN saClnt;
int saClntLen;
while(1)
{
}
return 0;
}
//这是我的线程调用代码
void AVEDlg::Trans()
{
DWORD idThread;
CreateThread(NULL,0,
(LPTHREAD_START_ROUTINE)Listen(),
(void*)this,0,&idThread);
}
//然后我在程序中产生AVEDlg对话框
AVEDlg* m_dlgAve2;
m_dlgAve2=new AVEDlg();
m_dlgAve2->Trans();
//然后的的程序就不动了。为什么呀??????????????
解决方案 »
- 公司要求开发简易报表程序,可以允许客户自己修改打印的位置,请大家指点一下。
- 为什么发送不出按键信息
- 怎样在一台TNT2显卡的电脑上显示24位色?编程需要处理24位DDB的情况,可显示属性中只有16位和32位色可选
- 十进制转十六进制,再十六进制转CString型
- CFileDlg 获得保存文件路径?
- 下列语句一直联不上数据库,不知怎么回事!
- 使用GetOpenFileName无法打开“打开文件“对话框
- 想对CDC中的内容进行旋转,但是setpixel效率太低,有什么办法吗?
- 如何利用多线程实现快速排序????
- 是不是在PreCreateWindow(cs)中修改cs.dwexstyle的WS_MAXIMIZE,为什么不能最大化窗口?
- 求助!关于链路层数据的接收于发送(windows下)
- 在对话框中,怎样才能响应键盘消息???
LPVOID lpParameter // thread data
);
{
Sleep(0);
}
return 0;
瞧连线程的句柄都没有保存 CWinThread * yourthread
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes
DWORD dwStackSize, // initial thread stack size
LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
LPVOID lpParameter, // argument for new thread
DWORD dwCreationFlags, // creation flags
LPDWORD lpThreadId // pointer to receive thread ID
);
基本的都没有搞清楚,如果闲这麻烦,试试使用AfxBeginThread控制工作线程,它控制起来容易些!
NT下可一支持安全特性dwStackSize 缺省为 0 即 1M,你可以自己指定
lpStartAddress 就是你的函数名字,在C中函数名字就代表地址
lpStartAddress 是你要传递到线城中的参数
lpThreadId 返回线城ID
{;}
将会占去几乎所有的CPU时间,所以你的主线程不动了,改为
while(1)
{sleep(10);}