首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

!命名管道 一读取管道程序就卡死。GetLasterror()也没用

2012-06-05 
求助!命名管道 一读取管道程序就卡死。GetLasterror()也没用。C/C++ codecase IDC_RECEIVE:if (!ReadFile(hP

求助!命名管道 一读取管道程序就卡死。GetLasterror()也没用。

C/C++ code
case IDC_RECEIVE:            if (!ReadFile(hPipe,words,1024,&bytewrite,NULL))            {                wsprintf(tips,TEXT("读取管道数据失败!错误代码:(%d)"),GetLastError());                SetDlgItemText(hand,IDC_TIP,tips);                return FALSE;            }            SendMessage (hEdit1, EM_GETSEL, (WPARAM) &iStart,(LPARAM) &iEnd);//获得显示框文本的结束位置;            SendMessage (hEdit1, EM_SETSEL, iEnd, iEnd);              //选择显示文本的结束位置;            SendMessage (hEdit1, EM_REPLACESEL, 0, (LPARAM)words); //向显示框中添加新输入的文本;            return TRUE;


只要执行到上面的case 程序就会失去响应!

找不到原因啊!整个解决方案的代码有200多行,不敢都放上来。
我想上传上来 不知有没有人会愿意帮我调试

[解决办法]
你的管道阻塞了吧,那边没东西写入,这边一直在等待

把你的case处理开一个额外的线程去做,否则管道阻塞的话,会导致主线程的卡死(主线程是UI),那么自然就出现了未响应,因为消息没法接受了
[解决办法]
你调调看,看是不是在管道这里阻塞了。。

看你另外一边的代码,写成功了没
[解决办法]
你有发送 1024 这么多吗?
Flush 一下。
[解决办法]
读完后,释放锁的代码有吗?

热点排行