异步模式下 程序运行一段时间后错误
发布时间:2011-06-28 14:03:10 文章来源:www.iduyao.cn 采编人员:星星草
异步模式下 程序运行一段时间后异常!
我的程序:
unsigned char SendBuffer[4] = {0x02, 0x10, 0x81, 0x6c};
定时器里发送数据:
OVERLAPPED m_ossend;
COMSTAT Cs;
unsigned long nwrite;
memset(&m_ossend,0,sizeof(OVERLAPPED));
m_ossend.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
unsigned char number = SendBuffer[0];
DWORD dwErrorFlags;
ClearCommError(HandleCom,&dwErrorFlags,&Cs);
if (WriteFile(HandleCom, SendBuffer, number + 2, &nwrite, &m_ossend) == 0)
{
if(GetLastError()==ERROR_IO_PENDING)
{
WaitForSingleObject(m_ossend.hEvent,1000);
}
}
线程里接受数据:
void __fastcall FR::Execute()
{
while(!Terminated)
{
Synchronize(Receive);
}
}
//---------------------------------------
void __fastcall FR::Receive()//数据接收
{
static double count= 0;
Form1->DisByteMemo->Text = count;
count++;
unsigned char ReceiveBuffer[512] = {0};
unsigned long ReceiveBufferLength = 512;
OVERLAPPED m_osRead;
COMSTAT Cs;
memset(&m_osRead,0,sizeof(OVERLAPPED));
m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
unsigned long nread;
unsigned long Error;
for (int i = 0;i < ReceiveBufferLength; i++)
{
ReceiveBuffer[i] = 0x00;
}
ClearCommError(HandleCom, &Error, &Cs);
if (Cs.cbInQue > 0 )
{
int temp = min(Cs.cbInQue,ReceiveBufferLength);
if(ReadFile(HandleCom, ReceiveBuffer, temp, &nread, &m_osRead) == false)
{
if(GetLastError()==ERROR_IO_PENDING)
{
WaitForSingleObject(m_osRead.hEvent,2000);
}
}
}
}
我在使用异步模式发送接受数据,开始的20分钟左右,发出数据和接收数据都正常。运行一段时间后,程序抛出异常,然后电脑像司机一样。求大侠给予指点。
------解决方案--------------------
只需定义一个就可以了,然后根据GetLastError函数的返回值进行判断。
像这样的问题最后去VC\MFC版块问,呵呵哪里解答的人会更多些,四处开花嘛
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
C#项目中如何更改项目保存的文件夹名?
求解。。
------解决方案--------------------
好像需要重构吧,同样求高人解答。
------...
-
C#中让TextBox只能输入数字的问题
我用的如下的代码:
static private Regex r = new Regex("^[0-9]{1,}$ ");
...
-
带数据库的程序打包注意什么?
打的包出错:Error:System.InvalidOperationException: ExecuteReader 要求已打开且可用的连接。连接的...
-
想学习一下网络程序开发 请给推荐几本书
学习基于http协议的程序开发 比如获取网页 分析网页 模拟网页操作 下载上传文档等知识 ...
-
qq的安装包是用什么工具?
想用.net制作一个想qq一样比较漂亮的安装包。有例子最好
------解决方案--------------------
新建->安...
-
C# 写的windows服务 调用 C++ dll 的问题
我封装了一个dll
用一个普通的winform程序 调用的时候没 问题。
但是放在C#写的服务程...
-
在VS2005中怎么调出 解决方案 那个图标?(图示)求解释~~~
这是我用的VS
这是我在教学视频上看到的VS
------解决方案------------...
-
寻友
有人在自学c#编程吗,可以互相认识一下,以后共同探讨学习中的问题……
------解决方案--------------------
朋友多了,路好走~
...
-
急!急!急!C#代码
怎样将数据库中的数据动态加载到Treeview控件中
------解决方案--------------------
C# code
void CreateTree(T...
-
救急??????????????????
哪位高手帮我一下,在C#中怎么写关于鼠标和键盘监听事件,我的程序就差监听鼠标和键盘是否动,然后定时关机这个功能了,请高手指点,...