标题暂无,日后再总结

在用一个vc6工程代码的时候出现了如题的错误,google之后发现大部分文章都是说是字符集问题。而实际的问题是vector< char >的iterator不能被转化为char指针,解决办法很简单,由类似 (vectorChar.Begin()+i) 改为 (&vectorChar.Front()+i)的方法解决。

本也不是个问题,可为什么vc6可以转而vc9要改动呢?望有牛人告知。

 

另外还遇到一个错误,本来截了图,忘记传网盘了,回公司补充吧。

问题在于,一个winapp启动的一个进程A跟这个winapp发消息让winapp关闭,而这个消息要在这个winapp下的一个cwnd才能得到响应,而进程A在cwnd还不存在的时候就发消息,所以出错了。解决方法是在cwnd中再启动此进程。

 

工作之前没接触过MFC,到今天才有机会写一下线程退出的函数,通过调试对这部分理解深入了一点。

线程安全退出

 

线程定义:

CWinThread *m_hHttpThread;

 

在窗口构造函数中初始化:

m_hHttpThread = NULL;

 

线程启动:

if (m_hHttpThread==NULL)

{

m_hHttpThread = AfxBeginThread(StartHttp,this,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);

m_hHttpThread->m_bAutoDelete = FALSE;

m_hHttpThread->ResumeThread();

}

 

线程退出

if (m_hHttpThread!=NULL)

{

m_hHttpThread->PostThreadMessage(WM_QUIT,0,0);

DWORD dwExitCode;

while (1)

{

Sleep(200);

::GetExitCodeThread(m_hHttpThread->m_hThread,&dwExitCode);

if (dwExitCode == STILL_ACTIVE)

{

//do nothing

}

else

{

delete m_hHttpThread;

m_hHttpThread = NULL;

break;

}

}

}

 

TimeEvent

之前一个BUG,今天心血来潮去改,后面发现是因为某些时候TimeEvent没有得到CPU时间导致的。怪不得这个BUG被隐藏了这么久,我之前想去查,主管都不愿意给时间..

通过漫天的断点+CallStack+一次运气——问题发作的时候某TimeEvent没触发,终于发现了问题。

以后遇到这种时灵时不灵的BUG,可以往TimeEvent去想想。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值