MFC 进入线程后时常会卡住程序,然后报内存泄露

qq_37834095 2018-07-09 08:55:14
一会好好的,没报内存泄露;一会卡住了,退出就报内存泄露。为什么进入线程后容易卡住程序啊,延时也用过了。内存泄露双击的地方说找不到指定文件。
...全文
1989 181 打赏 收藏 举报
写回复
用AI写文章
181 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2018-07-20
  • 打赏
  • 举报
回复
Congratulations !
qq_37834095 2018-07-20
  • 打赏
  • 举报
回复
好了,多谢师傅了,现在循环也不卡了
qq_37834095 2018-07-20
  • 打赏
  • 举报
回复
是的啊,师傅我的点动很早就是好的了。你说把this 换成time1 aparm?
schlafenhamster 2018-07-20
  • 打赏
  • 举报
回复
timef1aparm);
"什么叫点动" 即英文 Jog 意思 是 点一下 (按一下)动一次 。
qq_37834095 2018-07-20
  • 打赏
  • 举报
回复
怎么乱来操作啊,什么叫点动啊,长按就抬起就可以了!我试了啊,也是OK的
qq_37834095 2018-07-20
  • 打赏
  • 举报
回复
UINT timef3 (LPVOID aparm)
{


while(1)
{
timef1(this);//我用别的线程函数,这里报错啊,报只能在非静态成员函数使用,我用指针类也是一样的。

}

}
要怎么弄啊
schlafenhamster 2018-07-20
  • 打赏
  • 举报
回复
你 试试 按下 后 不 Up,接着移动鼠标 , 让鼠标离开 按钮区域 后再 Up , 看看这个 Up 还能不能 接受到 ?
qq_37834095 2018-07-20
  • 打赏
  • 举报
回复
鼠标 离开 按钮区 后再 Up , 我鼠标离开就是抬起啊,就停止了。再来的话,会继续在这里变化的毕竟我没有清零啊
待续_1006 2018-07-20
  • 打赏
  • 举报
回复
学习各位大佬
qq_37834095 2018-07-20
  • 打赏
  • 举报
回复
还早啊,不是还有xyz的没有做吗,这只是其中一小部分。先整整别的了
schlafenhamster 2018-07-19
  • 打赏
  • 举报
回复
定时器 运行 还是 在 主线程 ,要 不 阻塞 得在 另一个 线程。
或者 是 DoEnevnt 。如 jog 的 代码 可以 如下:

//
void DoEvents()
{
MSG msg;
// Process existing messages in the application's message queue.
// When the queue is empty, do clean up and return.
while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{// has msg
if (!AfxGetThread()->PumpMessage()) break;
}
}
//
bool setJogMode(short axis,double fAcc,double fDec)
{
TJogPrm jog;
short rtn = 0;
// 将AXIS轴设为Jog模式
rtn = GT_PrfJog(axis);
if(rtn) return false;
// 读取Jog运动参数
rtn = GT_GetJogPrm(axis,&jog);
if(rtn) return false;
//
jog.acc = fAcc;
jog.dec = fDec;
jog.smooth = 0.0;
// 设置Jog运动参数
rtn = GT_SetJogPrm(axis,&jog);
if(rtn) return false;
//
return true;
}
//
bool DoJogging(short axis,double vel)
{
short rtn = 0;
long sts = 0;
// 设置AXIS轴的目标速度
rtn = GT_SetVel(axis,vel);
if(rtn) return false;
// 启动AXIS轴的运动
rtn = GT_Update(1<<(axis-1));
if(rtn) return false;
do
{
DoEvents();
rtn = GT_GetSts(axis,&sts);
if(rtn) return false;
} while(!(sts & STS_MOTOR_ARRIVE));
//
return true;
}
// X+
void CCoffeeDlg::OnButton8()
{
// TODO: Add your control notification handler code here
if(setJogMode(AXIS_X,0.25,0.25))
{
bool ret=DoJogging(AXIS_X,100.0);
}
}
// X-
void CCoffeeDlg::OnButton9()
{
// TODO: Add your control notification handler code here
if(setJogMode(AXIS_X,0.3,0.3))
{
DoJogging(AXIS_X,-100.0);
}
}

qq_37834095 2018-07-19
  • 打赏
  • 举报
回复
其他都好了,就是循环卡死界面了,程序还是好的
qq_37834095 2018-07-19
  • 打赏
  • 举报
回复
恩 ,发现定时器循环使用的话,界面也是移动不了啊,界面无法自动刷新了,但是程序是可以的啊。怎么让界面不会假死啊
qq_34692210 2018-07-19
  • 打赏
  • 举报
回复
可以试下使用事件代替定时器和Sleep。
schlafenhamster 2018-07-19
  • 打赏
  • 举报
回复
从 你的 代码 看 Gts 并没有 “增量” 点动!
你 试试 按下 后 ,鼠标 离开 按钮区 后再 Up , 看看这个 Up 还能不能 接受到 ?
qq_37834095 2018-07-19
  • 打赏
  • 举报
回复
我长按里面都包括了可加可减! 我把事件放到循环SetTimer下面可是还是没有效果
schlafenhamster 2018-07-19
  • 打赏
  • 举报
回复
PM_NOREMOVE PeekMessage NOREMOVE 消息不 移走 。
AfxGetThread()->PumpMessage() // 执行 消息

"那是长按就会继续增加的"

增 量 点动 ,是 “加速 移动 减速 ” 的 过程 ,
连续点动 是 加速 一直移动(按下) 减速 的 过程。
qq_37834095 2018-07-19
  • 打赏
  • 举报
回复
怎么不让timer1卡死界面这就可以了啊
qq_37834095 2018-07-19
  • 打赏
  • 举报
回复
void DoEvents()
{
MSG msg;
// Process existing messages in the application's message queue.
// When the queue is empty, do clean up and return.
while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{// has msg
if (!AfxGetThread()->PumpMessage()) break;
}
}
这里表示队列消息移除……然后是什么呀,我把timef1放这里可以吗

我用的另外一个事件怎么行不通啊
qq_37834095 2018-07-19
  • 打赏
  • 举报
回复
我的点动是OK的啊!那是长按就会继续增加的!*pDlg指向类啊,我要访问窗口的控件,这样的话要销毁吗?我给控件关联变量了,给他初始化值了,没有报错了
加载更多回复(157)
内容概要:本文系统研究了基于雅可比伪逆迭代的双臂协同轨迹规划与跟踪误差收敛性问题,结合机械臂正向与逆向运动学建模、蒙特卡洛法分析工作空间、笛卡尔空间内的圆弧轨迹生成等关键技术,利用Matlab实现了双臂系统的协同控制与轨迹跟踪仿真。重点探讨了雅可比矩阵伪逆法在解决冗余自由度机械臂逆运动学问题中的应用,深入分析了轨迹跟踪过程中误差的收敛特性,并通过仿真实验验证了该方法在复杂任务场景下的有效性、稳定性与鲁棒性,为多臂机器人在工业自动化、精密操作等领域的协同作业提供了理论依据与技术支持。; 适合人群:具备机器人学、自动控制理论基础及Matlab编程能力的科研人员与工程技术人员,特别适合从事机械臂控制、轨迹规划、多机器人协同等方向的硕士、博士研究生及相关领域研究人员。; 使用场景及目标:①掌握基于雅可比伪逆法的机械臂逆运动学求解原理与实现方法;②理解双臂系统在笛卡尔空间中协同轨迹规划的机制;③分析并优化轨迹跟踪过程中的误差收敛性能;④为多机器人系统在复杂动态环境下的高精度协同控制提供算法设计与仿真验证支持。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,按照文档目录循序渐进地学习,重点关注算法实现细节、仿真参数设置与结果分析部分,同时可进一步探索将智能优化算法或深度学习方法引入轨迹规划与误差补偿的研究方向。

15,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧