求助!命名管道 一读取管道程序就卡死。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 一下。
[解决办法]
读完后,释放锁的代码有吗?