MFC 界面卡死问题,用了线程 [问题点数:50分]

Bbs1
本版专家分:85
结帖率 98.78%
Bbs7
本版专家分:14169
Bbs7
本版专家分:25962
Bbs10
本版专家分:137321
Blank
进士 2018年总版新获得的技术专家分排名前十
Blank
银牌 2019年7月 总版技术专家分月排行榜第二
2019年5月 总版技术专家分月排行榜第二
Blank
铜牌 2019年4月 总版技术专家分月排行榜第三
2019年3月 总版技术专家分月排行榜第三
Blank
红花 2019年7月 VC/MFC大版内专家分月排行榜第一
2019年6月 VC/MFC大版内专家分月排行榜第一
2019年5月 VC/MFC大版内专家分月排行榜第一
2019年4月 VC/MFC大版内专家分月排行榜第一
2019年3月 VC/MFC大版内专家分月排行榜第一
2019年1月 VC/MFC大版内专家分月排行榜第一
2018年12月 VC/MFC大版内专家分月排行榜第一
2018年11月 VC/MFC大版内专家分月排行榜第一
2018年10月 VC/MFC大版内专家分月排行榜第一
2018年9月 VC/MFC大版内专家分月排行榜第一
2018年8月 VC/MFC大版内专家分月排行榜第一
2018年5月 VC/MFC大版内专家分月排行榜第一
2018年4月 VC/MFC大版内专家分月排行榜第一
2018年3月 VC/MFC大版内专家分月排行榜第一
2018年2月 VC/MFC大版内专家分月排行榜第一
2018年1月 VC/MFC大版内专家分月排行榜第一
2017年12月 VC/MFC大版内专家分月排行榜第一
2017年11月 VC/MFC大版内专家分月排行榜第一
2017年7月 VC/MFC大版内专家分月排行榜第一
2012年7月 VC/MFC大版内专家分月排行榜第一
Bbs1
本版专家分:85
Bbs1
本版专家分:85
Bbs6
本版专家分:8666
Bbs9
本版专家分:87213
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2018年总版新获得的技术专家分排名前十
2012年 总版技术专家分年内排行榜第七
Bbs8
本版专家分:37895
Bbs5
本版专家分:2878
Bbs3
本版专家分:765
Blank
蓝花 2008年6月 硬件/嵌入开发大版内专家分月排行榜第三
Bbs7
本版专家分:20151
Bbs4
本版专家分:1217
Bbs2
本版专家分:443
Bbs10
本版专家分:171733
Blank
红花 2018年7月 VC/MFC大版内专家分月排行榜第一
2017年10月 VC/MFC大版内专家分月排行榜第一
2016年3月 VC/MFC大版内专家分月排行榜第一
2014年10月 VC/MFC大版内专家分月排行榜第一
2014年9月 VC/MFC大版内专家分月排行榜第一
2014年7月 VC/MFC大版内专家分月排行榜第一
2014年6月 VC/MFC大版内专家分月排行榜第一
2014年5月 VC/MFC大版内专家分月排行榜第一
2014年4月 VC/MFC大版内专家分月排行榜第一
2014年2月 VC/MFC大版内专家分月排行榜第一
2013年7月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2019年7月 VC/MFC大版内专家分月排行榜第二
2019年6月 VC/MFC大版内专家分月排行榜第二
2019年5月 VC/MFC大版内专家分月排行榜第二
2019年4月 VC/MFC大版内专家分月排行榜第二
2019年3月 VC/MFC大版内专家分月排行榜第二
2018年10月 VC/MFC大版内专家分月排行榜第二
2018年9月 VC/MFC大版内专家分月排行榜第二
2018年8月 VC/MFC大版内专家分月排行榜第二
2018年5月 VC/MFC大版内专家分月排行榜第二
2017年12月 VC/MFC大版内专家分月排行榜第二
2017年6月 VC/MFC大版内专家分月排行榜第二
2017年5月 VC/MFC大版内专家分月排行榜第二
2017年1月 VC/MFC大版内专家分月排行榜第二
2016年11月 VC/MFC大版内专家分月排行榜第二
2016年4月 VC/MFC大版内专家分月排行榜第二
2014年11月 VC/MFC大版内专家分月排行榜第二
2014年1月 VC/MFC大版内专家分月排行榜第二
2013年10月 VC/MFC大版内专家分月排行榜第二
2013年9月 VC/MFC大版内专家分月排行榜第二
2013年6月 VC/MFC大版内专家分月排行榜第二
2013年4月 VC/MFC大版内专家分月排行榜第二
2012年6月 VC/MFC大版内专家分月排行榜第二
Blank
蓝花 2018年11月 VC/MFC大版内专家分月排行榜第三
2018年6月 VC/MFC大版内专家分月排行榜第三
2018年4月 VC/MFC大版内专家分月排行榜第三
2018年3月 VC/MFC大版内专家分月排行榜第三
2018年2月 VC/MFC大版内专家分月排行榜第三
2018年1月 VC/MFC大版内专家分月排行榜第三
2017年11月 VC/MFC大版内专家分月排行榜第三
2017年9月 VC/MFC大版内专家分月排行榜第三
2017年8月 VC/MFC大版内专家分月排行榜第三
2017年4月 VC/MFC大版内专家分月排行榜第三
2016年12月 VC/MFC大版内专家分月排行榜第三
2016年10月 VC/MFC大版内专家分月排行榜第三
2016年2月 VC/MFC大版内专家分月排行榜第三
2015年10月 VC/MFC大版内专家分月排行榜第三
2015年7月 VC/MFC大版内专家分月排行榜第三
2012年10月 VC/MFC大版内专家分月排行榜第三
winform界面卡死问题
具体<em>问题</em>是这样:rnShow一个窗体上有一个TreeView,TreeView的Nodes数据加载时间比较长,所以我想把加载TreeNode的方法单独起一个<em>线程</em>来做,做好了再加载到窗体上,但是现在不管是new Thread还是BackgroundWorker都还是一样会搞的<em>界面</em><em>卡死</em>.rn代码:rn[code=C#]//主窗体:rnpublic void ShowNewWindow()rnrn TreeForm tf = new TreeForm();rn tf.Show();rn tf.LoadTree();rnrn//子窗体具有一个panle一个treeview,treeview加载的时候显示panle上面有gif动画表示加载中:rnpublic void LoadTree()rnrn treeView1.Nodes.Clean();rn treeView1.Nodes.Add(GetNode());rnrnrnprivate TreeNode GetNode()rnrn //....获得到节点对象的方法,最终return一个TreeNode对象rn[/code]rnrn我做的时候单独把GetNode放在一个<em>线程</em>里去做或者是后台去做,感觉还是会阻塞主<em>线程</em>,毕竟操作了主窗体上的控件,还是占<em>用了</em>资源,没想明白怎么搞才行。rnrn请教下,我应该如何加<em>线程</em>才可以不让主<em>界面</em>避免<em>卡死</em>的状态呢?我的panle应该如何控制才能正常显示出来呢?
C#界面卡死问题
各位高手rn 我在<em>界面</em>1和<em>界面</em>2转换时总出现当按下切换按钮后<em>界面</em><em>卡死</em>在当前<em>界面</em>,像死机一样,不知该怎么解决,希望各位高手能帮忙解决,谢谢了,以下是我的转换程序,希望各位帮忙修改。rn private void Switch_Click(object sender, EventArgs e)rn rn tryrn rn comm.DataReceived -= comm_DataReceived;//取消注册串口接收事件rn comm.Close();//关闭串口rn rn finallyrn rn rn Canshu_Class.flag = true;rnrn this.Close();//关闭当前<em>界面</em>rn DanMian d1 = new DanMian();rn d1.ShowDialog();//打开新<em>界面</em>rn rn rn
线程卡死问题
我两款游戏用同一套系统,就是逻辑判断不同,就是三国杀那样的rnrn第二款本来好的,后来我把代码复制出来,在别处稍微修改了一下再复制回去就出<em>问题</em>了,怎么clean也不管用rnrn而且这个报错,很人品,同样的行为,有时候报错有时候不报错,而且拿很旧的好的代码复制过去也无效了rnrn错误的形式就是什么都不响应rnrn最终我想到用输出信息来判断卡在哪一步rnrnjou.java里rn[code=java]rnsynchronized(gwait)rn rn gwait.wait();rn rn //等待玩家操作rn System.out.println("玩家操作了");rn synchronized(opsecure)rn rn opsecure.wakeup=false;rn opsecure.wait();//系统内部在计算,不接受玩家再度操作rn rn System.out.println("");rn[/code]rnrnrngamerOperation.java里rnrn下面这个是玩家操作按键之后rn[code=java]rnpublic void actionPerformed(ActionEvent e) rn // TODO Auto-generated method stubrn System.out.println("AP begins");rn//softclick是AI按键,可以忽略,我这个AI没开rn if (opseat.lplayertype.lvalue.equals("AI"))rn rn if (!softclick)rn return ;rn softclick=false;//avoid local clickrn jou.opsecure.wakeup=false;rn rn//local表示这个是本地玩家的rn if (opseat.lplayertype.lvalue.equals("local"))rn rn System.out.println("userclick="+userclick);//多此一举 userclick=true 表示等待的是用户按键rn//当用户按键进行处理的,此句始终打印truern if (!userclick)rn return;rn userclick=false;//这里原来程序是true,我改成false了,貌似不影响rn rn if (!this.opseat.isAI)rn synchronized (jou.gwait)rn rnrn jou.gwait.notify();rn rn else //没开AI,并且isAI都是false 不会走到这里rn rnrn try rn Thread.sleep(1000);rn catch (InterruptedException e1) rn // TODO Auto-generated catch blockrn e1.printStackTrace();rn rn rnrn System.out.println("");//这句打印的rn while (jou.opsecure.wakeup)rn rn //以前这里一直好的,就是唤醒jou.java里的gwait.wait()rn //等jou.java里执行到opsecure.wait()的时候,jou.opsecure.wakeup就会=false,表示正在计算一步用户操作,不接受任何其他操作,其他所有人都等待rn //1.7里一直好的rn //这个循环里没有内容rn //然后就是这里一段,上面的一句打印,下面的一句不打印,而且之前好的,没改过这里rn rn System.out.println(""+jou.topscene());//这句就不打印rnrn[/code]
PythonQT界面卡死问题
针对一运行就时间长,有延时的方法就<em>卡死</em><em>问题</em>,可以用进程、<em>线程</em>、进程池多种办法来解决,让<em>界面</em>进程和时间长有延时的进程分开运行,就可以避免运行时<em>界面</em><em>卡死</em>的<em>问题</em>下面是我写的demo,供参考# -*- coding: utf-8 -*-&quot;&quot;&quot;Module implementing MainWindow.&quot;&quot;&quot;from PyQt4.QtGui import QMainWindowfrom PyQt4.QtC...
关于线程卡死问题
我使得一个进程加载了我的DLL文件,rnrn我想在DLL文件中实现每隔一定时间(大于4秒)执行一次我自己写的函数.rnrn[color=#0000FF]我的方法是写一个死循环,在里面加上延时功能.但有几个<em>问题</em>/[/color]rnrnSLEEP会卡进程(目标进程)rnrnGetTickCount会卡进程(目标进程)rnrnSetTime会卡进程(目标进程)rnrn如何实现?
关于主线程阻塞导致界面卡顿问题总结
遇到的<em>问题</em> 一个<em>界面</em>里面执行了刷新和一个动画效果,当动画效果执行完之后会对<em>界面</em>进行重新绘制,这个时候会出现卡顿现象。 解决<em>问题</em> 经多次查看,<em>问题</em>不出在动画上,是动画执行完毕之后更新一个textView里的内容,这个textView宽高是wrapContent的,所以,当更新textView内容的时候会重新绘制textView的宽高,导致了主<em>线程</em>阻塞,出现卡顿。 解决方法:将此textView
MFC使用Sleep() 导致窗口界面卡死的解决办法
原因是MFC的窗口<em>界面</em>也是一个<em>线程</em>,当然是主<em>线程</em>,调用Sleep会导致主<em>线程</em>阻塞,也就是<em>界面</em>‘假死’的现象。所以,如果想让<em>界面</em>不<em>卡死</em>,就要新创建一个<em>线程</em>,让原本的代码在<em>线程</em>函数里运行。 下面是我的一个例子,我之所以会用到Sleep函数,是因为我有一个While(1)的死循环,我希望它每隔一定时间执行一次,而不是&amp;quot;鬼畜态&amp;quot;的疯狂跑… = =|| 首先我们再按钮函数里添加以下代码: 然后是actio...
MFC 解除窗口父子关系 主界面卡死
各位大牛们,请教一个困扰我很久的<em>问题</em>,我有2个窗口,主窗口在主进程,子窗口在子进程,通过SetParent设置窗口的父子关系,当子窗口<em>卡死</em>时,我就解除窗口的父子关系,让主窗口复活,现在<em>问题</em>是主窗口是可以复活了,可是一单击窗口的按钮,比如最大化按钮,主窗口却没有反应了,是怎么回事呢?
VC多线程中控制界面控件的几种方法
[转]http://hi.baidu.com/magicyang87/blog/item/23bbf2fd72d6b81108244d73.html      为了保证<em>界面</em>的用户体验经常要把数据处理等放到子<em>线程</em>中进行,然后把结果更新到主<em>界面</em>,通常有这样几种方法。   1.启动<em>线程</em>时把控件关联变量的指针传参给<em>线程</em>函数,这种方法无疑是最简单的方法,但极容易造成访问异常,因为
Qt quick 界面卡死问题
请问各位大神 我最近QT C++ 编写串口接收数据 用QT quick 编写<em>界面</em> 在<em>界面</em>上用rectangle的颜色值变化来说明串口接受数据的变化 可是QT quick编写的<em>界面</em>总<em>卡死</em> 是什么<em>问题</em>呢 我是新手 请大神指点
android 录像界面卡死问题
我现在<em>线程</em>里面录像哦,移除<em>线程</em>关闭录像之后,屏幕就卡在录像的最后一个画面里面,这是为什么啊 nn、n case R.id.avm_record_igview:n // 录制n if(isRecording)n avm_record_igview.setBackgroundResource(R.drawable.ivideo_stop_record_selector);nn // 开启<em>线程</em>n handler.post(runnable);n isCycle = !isCycle;n else n avm_record_igview.setBackgroundResource(R.drawable.ivideo_start_record_selector);n if(true == isCycle)n avm_record_igview.setBackgroundResource(R.drawable.ivideo_start_record_selector);n stopRecording();n// stopPreview(); n // 移掉<em>线程</em>n handler.removeCallbacks(runnable);n //循环取反n isCycle = !isCycle;n n booleanRecording();n n break;n n n /**n * 停止录像,并保存n */n private void stopRecording() n n if (mMediaRecorder == null)n n return;n n try n mMediaRecorder.stop();n catch (IllegalStateException e) n // TODO Auto-generated catch blockn e.printStackTrace();n n releaseMediaRecorder();n isRecording = !isRecording;n n n // ============================= 释放记录器对象 =========================nn private void releaseMediaRecorder() n if (mMediaRecorder != null) n try n mMediaRecorder.reset(); // 记录器重置n mMediaRecorder.release(); // 记录器释放n mMediaRecorder = null; // 记录器为空nn catch (Exception e) n // TODO Auto-generated catch blockn e.printStackTrace();n n n n n n // ================= 开始<em>线程</em>进行循环录像 ==================n private Runnable runnable = new Runnable() n n @Overriden public void run() n // TODO Auto-generated method stubn try n // 创建录像文件n fileName = System.currentTimeMillis() + ".mp4"; // 文件名 时间戳.mp4n absolutePath = Constants.RECORD_VIDEO_PATH + fileName; // 保存路径 + 文件 n // 在<em>线程</em>中进行录像n while (isRecording)n startRecording(); // 开始录像n if(true == DEBUG)n Log.e(TAG,"startRecording time = "+ System.currentTimeMillis());n catch (Exception e) n Log.e(TAG,"Looper Recording = "+ e);n n // 每次时间到之后重启一下<em>线程</em>n handler.postDelayed(runnable, delayMillis);n n ;
SOCKET线程卡死程序界面问题
直接上代码:rn[code=C/C++]rnint CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)rnrn if (CFrameWnd::OnCreate(lpCreateStruct) == -1)rn return -1;rn rn if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOPrn | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||rn !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))rn rn TRACE0("Failed to create toolbar\n");rn return -1; // fail to creatern rnrn if (!m_wndStatusBar.Create(this) ||rn !m_wndStatusBar.SetIndicators(indicators,rn sizeof(indicators)/sizeof(UINT)))rn rn TRACE0("Failed to create status bar\n");rn return -1; // fail to creatern rnrn // TODO: Delete these three lines if you don't want the toolbar torn // be dockablern m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);rn EnableDocking(CBRS_ALIGN_ANY);rn DockControlBar(&m_wndToolBar);rnrn SetTimer(1,2000,NULL); //启动<em>线程</em>rnrn return 0;rnrnrnrnvoid CMainFrame::OnTimer(UINT nIDEvent) rnrn // TODO: Add your message handler code here and/or call defaultrn CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;rn CDemo1View *pView=(CDemo1View *)pMain->GetActiveView();rnrn #ifdef IEC_61850_USErn if(pView->CreateIEC61850Socket() == FALSE) //创建SOCKET<em>线程</em>并accept客户端的连接,当执行这里时,程序的整个框架就是<em>卡死</em>状态,但创建的SOCKET的<em>线程</em>工作正常! rn rn AfxMessageBox(_T("创建61850Socket失败!")); rn rnrn #endifrn rn CFrameWnd::OnTimer(nIDEvent);rnrn[/code]rnrn<em>线程</em>工作正常,但ontimer开始执行后,框架就死了,请问怎么解决?成分感谢!
MFC 程序运行一段时间就没有画面,卡死了 求MFC大神帮忙~~
实现的是一个交通模拟,想尽量做的简单一点就好,程序主要用的东西有: 1.CList 用于存储每条路上的车辆,便于进行控制 2.路灯画在OnCreate 中,在ontimer 中进行控制 3.有专门的函
MFC子窗口导致程序卡死
我有2个对话框,想把一个对话框B嵌在另一个对话框A里。 对话框A中有几个控件,例如按钮,文本框之类的。 然后在对话框A的初始化位置写: m_PicDlg.Create(IDD_PICDLG); //m
程序运行几个小时后,界面卡死,后台在运行
写了一个程序主要实现在服务端接受数据,然后解包显示在<em>界面</em>上,<em>界面</em>上显示一个CListCtrl和一个CStatic,CStatic用于显示图片,CListCtrl显示数据。现在的<em>问题</em>是运行几个小时候<em>界面</em>
mfc程序卡死现象
每当<em>mfc</em>程序正常运行时,我按下win+L后,再次登录进去,程序就卡住了,按什么都没有用,只能强制关闭。 各位大神有解决办法吗?
用了线程,为什么主界面不响应??
我有一个程序,<em>用了</em><em>线程</em>来执行存储过程,主窗体用来显示不断执行滚动条rn,但我遇到这样的情况,一执行存储过程,滚动条就停止了!要等执行完了rn后滚动条才会动,不知道为什么?rn void __fastcall TMythread::Execute()rnrn Synchronize(ExecSQL);rnrnvoid __fastcall TMythread::ExecSQL()rnrnrn cnt->Query1->SQL->Clear(); //ADOQueryrn cnt->Query1->SQL->Add(sql);rn cnt->Query1->Active=1;rnrnrn 主窗体用Timer控件不停循环执行滚动,rnrn void __fastcall TFframe::Timer2Timer(TObject *Sender)rnrn CGauge1->MinValue = 0;rn CGauge1->MaxValue =1000;rn CGauge1->Progress = 0;rn for ( int i=0; iAddProgress(1);rn Application->ProcessMessages();rn rnrnrnrn 但一执行<em>线程</em>,滚动条就停止了!!<em>界面</em>就不响应了,错在哪里了???rn void __fastcall TFframe::updateClick(TObject *Sender) //执行按钮rnrn th1 = new TMythread(false);rn Timer2->Enabled=true;rn if (gb->Checked)rn rnrn gbgx->Caption="正 在 扫 描。。。";rn sql="declare @info varchar(200),@i int exec update_gb @info output,@i output select @info,@i"; //执行过程rn gbgx->Caption="数据更新成功。。。";rn rnrn
UI界面卡死
加上timer后,UI<em>界面</em>就<em>卡死</em>,咋回事?[img=https://img-bbs.csdn.net/upload/201902/22/1550823859_169357.png][/img][img=https://img-bbs.csdn.net/upload/201902/22/1550823868_400047.png][/img]
eclipse卡死在开始界面
删除.metadata文件夹即可
WPF界面卡死
Wpf中使用WindowsFormHost承载SuperMap控件时遇到一个比较严重的<em>问题</em>,点击按钮用supermap自带的接口生成等高线,等高线生成之后<em>界面</em>就会<em>卡死</em>,按钮关联的代码正常返回,会是什么<em>问题</em>呀?期待高手答复,先行谢过。rn
socket服务器端线程卡死
我写一个网络socket服务器端的<em>界面</em>,但不知怎么回事,老是死在<em>线程</em>里,具体如下:rn[code=Java]rnrn/////////开启服务方法rnprivate void startActionPerformed(java.awt.event.ActionEvent evt) rn try rn serverSocket = new ServerSocket(port);rn displayArea.setText("服务器启动成功...");rn //若注掉下面××中的代码,可以显示 "服务器启动成功..."rn //但若未注掉,就不显示 "服务器启动成功...",且处于无响应状态rn//××××××××××××××××××××××××××××××××××××××××rn while(true)rn Socket socket;rn try rn socket = serverSocket.accept();rn Thread workThread = new serverThread(socket);rn workThread.start();rn catch (IOException e) rn e.printStackTrace();rn rn rn//××××××××××××××××××××××××××××××××××××××××rnrn catch (IOException ex) rn Logger.getLogger(serverJFrame.class.getName()).log(Level.SEVERE, null, ex);rn rnrn rn///////////////////////////若有请求,服务端调用的<em>线程</em>rnpackage sock.network;rnrnimport java.io.BufferedReader;rnimport java.io.IOException;rnimport java.io.InputStreamReader;rnimport java.io.PrintWriter;rnimport java.net.Socket;rnimport java.util.logging.Level;rnimport java.util.logging.Logger;rnrn/**rn *rn * @author qinguanrn */rnpublic class serverThread extends Threadrnrnrn public serverThread(Socket socket) rn this.socket = socket;rn rn rn public void run()rn BufferedReader br = null;rn PrintWriter pw = null;rn try rn str = "New connection accepted " + socket.getInetAddress() + ":" + socket.getPort();rn System.out.println(str);rn br = new BufferedReader(new InputStreamReader(socket.getInputStream()));rn pw = new PrintWriter(socket.getOutputStream(), true);rn while ((msg = br.readLine()) != null) rn msg=socket.getInetAddress()+":"+socket.getPort()+"say:"+msg;rn System.out.println(msg);rn pw.println(msg);rn if(msg.equals("bye"))rn break;rn rn catch (IOException ex) rn Logger.getLogger(serverThread.class.getName()).log(Level.SEVERE, null, ex);rn finally rn try rn br.close();rn catch (IOException ex) rn Logger.getLogger(serverThread.class.getName()).log(Level.SEVERE, null, ex);rn rn rnrnrn rnrn private Socket socket;rn private String str;rn private String msg;rnrn[/code]rn不知道为什么,求知道的指点下。谢谢。。
请教一下可谓老师关于MFC中程序界面卡死问题
各位老师好,我之前做了一个基于win32控制台的通信程序,实测有效。但是现在我想把它改为基于MFC的对话框程序,把功能程序贴在了一个按钮控件下,代码没有<em>问题</em>,就是.exe程序运行,<em>界面</em>就出现<em>卡死</em>。百度
mfc 中如果存在sleep延时后按钮无法响应解决方案
之前编写小程序,因为动态库存在一个倒计时<em>界面</em>,30秒,但是用户考虑到如果想从这个页面取消,希望加上一个取消按钮, 因为是单<em>线程</em>,当进入循环的30秒后程序等同于<em>卡死</em>状态,这时候的按钮是没有办法响应的,所以需要特殊处理: 处理如下: 将以下代码加入循环体 MSG msg;    if(PeekMessage(&amp;amp;msg,(HWND)NULL,0,0,PM_REMOVE))    {   ...
VC编程在线程里反复SLEEP为什么会让整个程序卡死
在一个非主<em>线程</em>里,我while循环里反复执行某段含有sleep的代码会逐渐让主程序<em>卡死</em>,为什么会这样呢? 既然是<em>线程</em>为什么sleep会影响到整个程序呢? 解决办法是不是只有settimer()在TIM
MFC对话框程序防止假死
单<em>线程</em>程序里有大循环的话经常会产生假死现象,即运行程序后对对话框的任何操作都无法响应。主要涉及消息循环。
MFC 主程序使用 Sleep() 时主程序界面假死,如何解决!
MFC 主程序使用 Sleep() 时主程序<em>界面</em>假死,如何解决!代码如下: void CTxtDlg::OnButton1() { // TODO: Add your control notifica
android surfaceview界面卡死
我的是surefaceview里的动画。当然是用<em>线程</em>处理的。之前的<em>线程</em>逻辑是完全没错的。项目跑了一个晚上都不会出错,后来因为需求,改了。加了很多的bitmap。但我都释放掉了。我看了log里,GC一直都在清除占用的内存,这个毋庸置疑。rnrn但最后给我的结果就是,<em>界面</em>卡在那里不动,等你再操作的时候就有报错(这个错误肯定是点击事件报错的。应该是<em>界面</em><em>卡死</em>,dispatchingevent在流到某个view的时候,view没有给他反应,无法接受事件所造成的。)rn06-10 10:34:00.475: ERROR/ActivityManager(58): ANR in com.cn.SuperCharacter (com.cn.SuperCharacter/.SuperCharacter)rn06-10 10:34:00.475: ERROR/ActivityManager(58): Reason: keyDispatchingTimedOutrn06-10 10:34:00.475: ERROR/ActivityManager(58): Load: 13.57 / 4.66 / 2.59rn06-10 10:34:00.475: ERROR/ActivityManager(58): CPU usage from 60472ms to 476ms ago:rn06-10 10:34:00.475: ERROR/ActivityManager(58): .SuperCharacter: 5% = 0% user + 4% kernel / faults: 590 minor 8 majorrn06-10 10:34:00.475: ERROR/ActivityManager(58): system_server: 2% = 1% user + 0% kernel / faults: 692 minor 19 majorrn06-10 10:34:00.475: ERROR/ActivityManager(58): adbd: 1% = 0% user + 1% kernel / faults: 20 minorrn06-10 10:34:00.475: ERROR/ActivityManager(58): qemud: 0% = 0% user + 0% kernel / faults: 2 minorrn06-10 10:34:00.475: ERROR/ActivityManager(58): ronsoft.openwnn: 0% = 0% user + 0% kernel / faults: 186 minorrn06-10 10:34:00.475: ERROR/ActivityManager(58): events/0: 0% = 0% user + 0% kernelrn06-10 10:34:00.475: ERROR/ActivityManager(58): re-initialized>: 0% = 0% user + 0% kernel / faults: 112 minorrn06-10 10:34:00.475: ERROR/ActivityManager(58): com.svox.pico: 0% = 0% user + 0% kernel / faults: 79 minorrn06-10 10:34:00.475: ERROR/ActivityManager(58): TOTAL: 7% = 2% user + 5% kernel + 0% softirqrnrnrn求高手鉴定!!!rnrn我增加的功能主要在bitmap方面,我在画动画的时候,在canvas里加了很多的固定位图,放在bitmap里。然后<em>线程</em>去调用,调用完就释放掉了。如果是oom的错误的话,就肯定有报错的。但现在是没有报错,<em>界面</em>卡着没动。rnrn<em>界面</em><em>卡死</em>的N种情况。(所有耗时的代码全部在<em>线程</em>里调用。不会有<em>界面</em>5秒未响应的<em>问题</em>。)rnrn跪求!
线程 界面卡死
现在在写一个类似一键安装的东西rnrn其中一个Copy()方法由于计算量大会导致<em>界面</em><em>卡死</em>rnrn于是将Copy()方法放到子<em>线程</em>里进行rnrn newThread.Start();rn newThread.Join();rn ......//需要继续执行的代码rnrn但这样仍然会导致主<em>界面</em>开始rnrn现在要求主<em>线程</em>等待子<em>线程</em>结束后继续执行后面的代码rn但是主<em>界面</em>(一个Form)不会<em>卡死</em>!rn求一方法!rn
Synchronize软件界面卡死
不知道啥<em>问题</em>,使用Synchronize会造成<em>卡死</em>rn[img=https://img-bbs.csdn.net/upload/201810/30/1540909070_710661.jpg][/img]
C#线程卡死
各位大牛,你们好,我最近在学习多<em>线程</em>编程,遇到这样一个<em>问题</em>,我用定时器定时,使一个文本框中的数字隔一秒加一次,然后又点击一个按钮,开辟一个<em>线程</em>,使另一个文本框中的数字也隔一秒加一次,按我的想法是两个文本框中的数字各自相加互补影响,但是,当我点击按钮开辟一个<em>线程</em>后,<em>界面</em>就死掉了,定时器也不工作,只有当<em>线程</em>执行的时间结束后程序才恢复过来,小弟初学多<em>线程</em>,请各位大神不惜赐教,感激不尽啊,下面是我的代码rn int ceshi;rn int ceshi2;rn System.Timers.Timer t;rn public Form1()rn rn InitializeComponent();rn rn private object obj = new object();rn private void button1_Click(object sender, EventArgs e)rn rn [color=#FF0000] Thread th = new Thread(new ThreadStart(dj_Run));rn th.Start();rn if (!th.IsAlive)rn th.Abort();rn rn private void dj_Run()rn rn rn this.Invoke((EventHandler)(delegatern rn for (int i = 0; i < 50; i++)rn rn tryrn rn ceshi++;rn textBox1.Text = ceshi.ToString();rn Thread.Sleep(1000);rn rn rn catch (Exception ex)rn rn MessageBox.Show(ex.Message);rn rn rn ));rnrn rn rnrn private void Form1_Load(object sender, EventArgs e)rn rn t = new System.Timers.Timer(1000);rn // t = new System.Timers.Timer(20);rn System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;rn t.Elapsed += new System.Timers.ElapsedEventHandler(Time_Running);//到达时间的时候执行事件; rn t.AutoReset = true;//设置是执行一次(false)还是一直t执行(true);rn t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;rn rn public void Time_Running(object source, System.Timers.ElapsedEventArgs e)rn rn rn ceshi2++;rn textBox2.Text = ceshi2.ToString(); rn rn
开了个线程卡死在malloc
我在实现上传文件功能时,开了个<em>线程</em>专门去读取文件内容并上传,但是在进入<em>线程</em>后就会<em>卡死</em>在malloc里。我用strace定位打印是[pid 21239] futex(0xb6dbce2c, FUTEX_WAIT_PRIVATE, 2, NULLrn就卡在这儿了
利用C++以MFC为平台写的软件自动崩溃,界面卡死,不响应任何操作
请教:我写了个软件,利用VS的MFC平台,在debug下运行,有时会出现<em>界面</em><em>卡死</em>的现象,不会响应任何动作,只能按停止调试来结束程序,按暂停指示指在Sleep(1);这句上,请问有人知道<em>问题</em>出哪了吗?
C# 为什么使用了线程界面假死?
这里贴出两个项目(已经测试)。 先贴不正确的多<em>线程</em> 设计如图: 引入命名空间: using System.Threading; 完整代码: namespace ThreadTest1 { public partial class Form1 : Form { public Form1() ...
登陆程序,为何在recv这里卡住了?
本人毕业设计做一个餐厅点菜系统,其基本思路是,客户端和服务器成功建立连接后,双向通信。 假定现在服务器端设置了用户账号密码为:“a”“123”,客户端先发送“Login:”命令,且已经被服务器端接收到
易语言控制子程序暂停继续运行源码.zip
易语言控制子程序暂停继续运行源码.zip这个是易语言源码,希望是你需要的例程,只有学习才会进步,感谢你的关注。谢谢
调用SuspendThread函数需要注意的问题
在实际环境中,调用SuspendThread时必须小心,因为不知道暂停<em>线程</em>运行时它在进行什么操作。如果<em>线程</em>试图从堆栈中分配内存,那么该<em>线程</em>将在该堆栈上设置一个锁。当其他<em>线程</em>试图访问该堆栈时,这些<em>线程</em>的访问就被停止,知道第一个<em>线程</em>恢复运行 。只有确切知道目标<em>线程</em>是什么(或者目标<em>线程</em>正在做什么),并且采取强有力的措施来避免因暂停<em>线程</em>的运行而带来的<em>问题</em>或死锁状态,suspendThread才是安全的。
python线程卡死问题解决
1. top命令和日志方式判定<em>卡死</em>的位置python代码忽然<em>卡死</em>,日志不输出,通过如下方式可以确定<em>线程</em>确实已经死掉了:# top 命令top命令可以看到机器上所有<em>线程</em>的执行情况,%CPU和%MEM可以看出<em>线程</em>消耗的资源情况由于机器上<em>线程</em>数量太多,可能要查看的<em>线程</em>的信息在top命令当前屏幕上显示不出来可以通过如下方式查看在top命令下输入:u 接下来会提示输入用户名,就可以查看该用户所执行的所有线...
使用了线程还是会将窗体卡死。。为什么。?
直接上代码:rn[code=C#]rnpublic delegate void myInvoke(); //声明委托rnrnprivate void Form_Login_Load(object sender, EventArgs e)rn rn tryrn rn Thread th = new Thread(new ThreadStart(DoAutoUpLoad));rn th.IsBackground = true;rn th.Start();rn rn catchrn rnrn rn rnrnpublic void DoAutoUpLoad()rn rn myInvoke i = new myInvoke(AutoUpLoad);rn this.BeginInvoke(i);rn rnrn public void AutoUpLoad()rn[/code]rnrn。。。为什么<em>用了</em><em>线程</em>了。窗体还是会出现<em>卡死</em>的情况。?。如果我把那段代码给注释了。就不<em>卡死</em>了。。求解。
C#用了线程界面还是卡死,麻烦帮忙看下
[code=C#]rnprivate void button1_Click(object sender, EventArgs e)rn rn if (button1.Text == "开始")rn rn button1.Text = "停止";rn regThread= new Thread(run);rn regThread.Start();rn rn elsern rn regThread.Abort();rn isregisting = false;rn button1.Text = "开始";rnrn rn rn private void run()rn rnrn if (listBox1.InvokeRequired)rn rn this.Invoke(new regist(run));rn rn elsern rn isregisting = true;rn username = textBox1.Text.Trim();rn password = textBox2.Text.Trim();rn email = textBox3.Text.Trim();rn listBox1.SelectedIndex = registIndex;rn for (int i = registIndex; i < listBox1.Items.Count; i++)rn rnrn tryrn rn if (isregisting)rn rn siteurl = listBox1.Text;rn formhash = GetHtml(listBox1.Text + str2, listBox1.SelectedValue.ToString(), this.myCookie, beforeformhash, behindformhash, true, true);rn string data = string.Empty;rn //post数据rn if (!string.IsNullOrEmpty(formhash))rn rn data = "regsubmit=yes&formhash=" + formhash + "&referer=&activationauth=&username=" + username + "&password=" + password + "&password2=" + password + "&email=" + email;rn string backstring = PostData(listBox1.Text + url, this.myCookie, listBox1.SelectedValue.ToString(), data, true);rn if (backstring.Contains("谢谢"))rn rn //在richtextbox中显示记录rn SetLog(siteurl + "成功!", Color.Green);rn successList.Add(siteurl);rn rn else if (backstring == "")rn rn SetLog(siteurl + "读取源代码出错!", Color.Red);rn falseList.Add(siteurl);rn rn elsern rn SetLog(siteurl + "失败", Color.Red);rn falseList.Add(siteurl);rn rn rn listBox1.SelectedIndex++;rn registIndex++;rn rn elsern rn SetLog("已停止", Color.Red);rn rn regThread.Abort();rn return;rn rn rn catchrn rn SetLog(siteurl + "出现错误!", Color.Red);rn listBox1.SelectedIndex++;rn registIndex++;rn //break;rn rn rn rn rn rn [/code]rn请教各位,我这个程序实现自动注册网站的功能,我把有关http收发的这部分放到单独的<em>线程</em>中,避免<em>界面</em><em>卡死</em>,因为列表中可能有非常多网站要注册,非常耗时,但是这样写<em>界面</em>还是<em>卡死</em>的,麻烦问下 怎么改呢?
MFC 防止多线程卡死
Par p; p.CmdLine = _T("ping 127.0.0.1"); HANDLE handle = CreateThread(NULL, 0, ExecuteCmd, &p, 0, NULL); while (TRUE){ DWORD result; MSG msg; result = MsgWaitForMult
线程 界面 问题
我现在的<em>问题</em>如下:rn 比如我在一个<em>线程</em>中改变X值,而又想通过这个X值去改变滚动条滑竿的位置,请问如何实现?思路~~~rn我也曾在<em>线程</em>中加了以下函数:ECG_TestDlg.m_scroll.SetScrollPos( X);rn但滑竿位置没有任何改。
如果我用SuspendThread将一个线程挂起,那么这时我要中止这个线程应该怎样做啊?
<em>问题</em>如上,谢谢大家了,有点急
MFC打开摄像头后,调用子窗口的按钮无法响应
MFC打开摄像头正常,没打开摄像头之前单独点击按钮也可以显示子窗口,但是在打开摄像头后,一开始调用子窗口的按钮可以点击,但是没有响应,然后所有的按钮就不能点击了,这是什么<em>问题</em>,怎么解决,有人清楚吗??
javacv录制视频时卡死
<em>问题</em>如下: 在开启录制一段时间后,不时会发生<em>卡死</em>现象,<em>卡死</em>位置在recorder.record(rotatedFrame); 处。 未<em>卡死</em>时前的视频可以进行正常播放。 本列参考http://blog.
MFC 华而不实的鼠标响应事件
        前几天搞了注入DLL代码的<em>问题</em>,今天偶然想到如何实现控件响应鼠标事件,如何鼠标移动到某控件上静态编辑框或者鼠标显示提示信息,经过几番搜索,还好全部解决,就上回的代码 先在MainDialogWnd.cpp中声明一个对象用过存放鼠标提示信息 然后在初始化函数OnInitDialog()中设置m_stat,VS20XX的可以略过这段。也有人喜欢用老版本经典的VC6++,VC6的MF...
线程问题(WinForm界面
需求:rn1、三个处理时间很长的函数,需要使用<em>线程</em>来根据时间间隔循环调用。rn2、<em>线程</em>处理结束都需要将结果显示在<em>界面</em>的DataGrid中rn3、有开始和结束命令按钮,让<em>线程</em>开始执行和结束执行。rn4、最好能在<em>界面</em>上显示各<em>线程</em>的运行状态????rn5、在.net的C#语音实现。rn6、最好有一个这样的程序框架。谢谢rnrn比较急,谢谢各们大侠...........
线程界面问题讨论
<em>线程</em>与<em>界面</em><em>问题</em>讨论rn我们在编程的时候会遇到下面的<em>问题</em>:rn一个任务我需要它在后台<em>线程</em>中执行,但在执行这个任务的时候,我希望能rnrn够在<em>界面</em>上反映任务的进度。比如给一个Label设置属性之类的操作。有时rnrn候又希望<em>线程</em>能够加入到<em>界面</em><em>线程</em>中来。像下面的代码:rnThread th = new Thread(new ThreadStart(Calc));rnth.Priority = ThreadPriority.AboveNormal;rnth.Start();rnth.Join();rn下面是一个例子程序。在win2000和XP中运行都没有<em>问题</em>,但在win98下就出rnrn现长久的等待。致使<em>界面</em>无响应。很像死机。rn试问这种<em>问题</em>出现的原因和解决办法?rnrnrnrnusing System;rnusing System.Drawing;rnusing System.Collections;rnusing System.ComponentModel;rnusing System.Windows.Forms;rnusing System.Data;rnusing System.Threading;rnrnnamespace Testrnrn public class frmTest : System.Windows.Forms.Formrn rn private System.Windows.Forms.Timer timer1;rn private System.Windows.Forms.Label label2;rn private System.Windows.Forms.TextBox txt;rn private System.Windows.Forms.Button btnTest;rn private System.Windows.Forms.Label label1;rn private System.ComponentModel.IContainer rnrncomponents;rnrn public frmTest()rn rn this.components = new rnrnSystem.ComponentModel.Container();rn this.txt = new rnrnSystem.Windows.Forms.TextBox();rn this.btnTest = new rnrnSystem.Windows.Forms.Button();rn this.timer1 = new rnrnSystem.Windows.Forms.Timer(this.components);rn this.label2 = new rnrnSystem.Windows.Forms.Label();rn this.label1 = new rnrnSystem.Windows.Forms.Label();rn this.SuspendLayout();rn this.txt.Location = new rnrnSystem.Drawing.Point(8, 80);rn this.txt.Name = "txt";rn this.txt.Size = new System.Drawing.Sizernrn(224, 21);rn this.txt.TabIndex = 0;rn this.txt.Text = "";rn this.btnTest.Location = new rnrnSystem.Drawing.Point(240, 80);rn this.btnTest.Name = "btnTest";rn this.btnTest.Size = new rnrnSystem.Drawing.Size(56, 23);rn this.btnTest.TabIndex = 1;rn this.btnTest.Text = "Test";rn this.btnTest.Click += new rnrnSystem.EventHandler(this.button1_Click);rn this.timer1.Enabled = true;rn this.timer1.Interval = 1000;rn this.timer1.Tick += new rnrnSystem.EventHandler(this.timer1_Tick);rn this.label2.Location = new rnrnSystem.Drawing.Point(8, 120);rn this.label2.Name = "label2";rn this.label2.Size = new rnrnSystem.Drawing.Size(296, 80);rn this.label2.TabIndex = 3;rn this.label1.Location = new rnrnSystem.Drawing.Point(16, 16);rn this.label1.Name = "label1";rn this.label1.Size = new rnrnSystem.Drawing.Size(280, 48);rn this.label1.TabIndex = 4;rn this.label1.Text = "用<em>线程</em>去更新<em>界面</em>在XP和rnrn2000下都没有<em>问题</em>。在98下就会出现<em>界面</em>没有响应,很像死机。等待的时间rnrn不确定。";rn this.AutoScaleBaseSize = new rnrnSystem.Drawing.Size(6, 14);rn this.ClientSize = new System.Drawing.Sizernrn(312, 214);rn this.Controls.Add(this.label1);rn this.Controls.Add(this.label2);rn this.Controls.Add(this.btnTest);rn this.Controls.Add(this.txt);rn this.Name = "frmTest";rn this.Text = "用<em>线程</em>去更新<em>界面</em>";rn this.ResumeLayout(false);rn rnrn [STAThread]rn static void Main() rn rn Application.Run(new frmTest());rn rnrn private void button1_Click(object sender, rnrnSystem.EventArgs e)rn rn DateTime dt = DateTime.Now;rn Thread th = new Thread(new ThreadStartrnrn(Calc));rn th.Priority = ThreadPriority.AboveNormal;rn th.Start();rn th.Join();rn DateTime dt1 = DateTime.Now;rn TimeSpan ts = dt1 - dt;rn msg += "<em>线程</em>执行时间:" + rnrnts.TotalSeconds.ToString() + "s\n";rn rnrn private void Calc()rn rn DateTime dt = DateTime.Now;rn txt.Text = "some thing";rn TimeSpan ts = DateTime.Now - dt;rn msg = "更新<em>界面</em>需要时间:" + rnrnts.TotalSeconds.ToString() + "s\n";rn rnrn string msg = "";rnrn private void timer1_Tick(object sender, rnrnSystem.EventArgs e)rn rn label2.Text = msg;rn rn rnrn
线程界面问题
我在一个工作者<em>线程</em>里处理数据rn怎么把处理完的数据在<em>界面</em>控件显示呢rnPostMessagernSendMessagern好像不好使啊rn谁给我点简单的例子看看啊
解决winform编程中使用线程界面卡死的案例
解决winform编程中使用<em>线程</em><em>界面</em><em>卡死</em>的案例 <em>用了</em>委托
WPFC#.net 跨线程更新UI 线程测试 解决界面卡死
Demo测试跨线更新UI 第一种 : Thread 达到跨<em>线程</em>更新UI 虽然使用Dispatcher.Invoke 和模拟winform 里面的DoEvent 但是运行中关闭还是会有异常,而且耗资源高; 第二种 : DispatcherTimer 失败:UI还是会卡顿; 第三种 : Timer 建议使用、资源占用少,关闭启动自如。
mfc响应鼠标移动事件以及孩子窗口的问题
-
MFC 创建UI线程
对于windows来说,所有的<em>线程</em>都是一样的,但MFC却把<em>线程</em>区分为两种:用户<em>界面</em>(UI)<em>线程</em>和工作者<em>线程</em>。用户<em>界面</em><em>线程</em>具有消息循环而工作者<em>线程</em>没有。UI<em>线程</em>可以创建窗口并给这些窗口发送消息,工作者<em>线程</em>执行后台任务,因其不接受用户直接输入蘑菇不需要窗口和消息循环。 创建UI<em>线程</em>需要首先从CWinThread派生一个<em>线程</em>类,改类与CWinApp类派生额应用程序类很相似(CwinApp继承自CWin
MFC下用户界面线程和工作者线程的区别?
刚接触多<em>线程</em>开发,为了省时间,所以发此帖子。 MFC下用户<em>界面</em><em>线程</em>和工作者<em>线程</em>的区别? 以及使用方法。例如创建和关闭。
mfc线程操作界面问题
UINT CMFC1Dlg::thread_testexit( PVOID pParam ) { while( g_bExtiThread ) { Sleep(1000); static int i
[MFC]界面线程和工作线程
1.前言MFC提供了2中<em>线程</em>的实现方式,一种是<em>界面</em><em>线程</em>,可以处理来自系统的消息,比如窗口的点击事件;一种是工作<em>线程</em>,用于处理繁琐的计算或者长时间的任务,例如后台打印,计算等。2.<em>界面</em><em>线程</em>界限<em>线程</em>的创建需要继承父类CWinThread,并继承与重写部分父类方法。见下表所示: 方法 说明 ExitInstance <em>线程</em>退出所需的工作 InitInstance <em>线程</em>创建的时候需要的工
C#采用线程监听socket连接出现界面卡死
我想编写一个socket的服务器监听程序,socket里面有个while(true)死循环一直监听客户端的连接,我开了一个<em>线程</em>用于来操作socket以防止<em>界面</em>没有响应,但是实际上<em>界面</em>还是<em>卡死</em>了。<em>界面</em>有两个按钮,一个开始按钮,用于开始<em>线程</em>,还有一个结束按钮,用于终止<em>线程</em>,但是结束按钮按了之后<em>线程</em>并没有结束,而且<em>界面</em>无法响应了。大家帮忙看看是什么原因或者有什么其他好的方法来解决这个<em>问题</em>。rn代码如下:rn[code=csharp]rnnamespace SocketServerrnrn /// rn /// MainWindow.xaml 的交互逻辑rn /// rn public partial class MainWindow : Windowrn rn Thread t = null;rn Socket s = null;rn public MainWindow()rn rn InitializeComponent();rn rnrn private void Start_Click(object sender, RoutedEventArgs e)rn rn tryrn rn t = new Thread(SocketServer);rn t.IsBackground = true;rn t.Start();rn rn catch (Exception e1)rn rn MessageBox.Show(e1.ToString());rn rn rn public void SocketServer()rn rn int port = 30000;rn string host = "127.0.0.1"; //127.0.0.1rnrn ///创建终结点(EndPoint)rn IPAddress ip = IPAddress.Parse(host);//把ip地址字符串转换为aIPAddress类型的实例rn IPEndPoint ipe = new IPEndPoint(ip, port); //用指定的端口和ip初始化IPEndPoint类的新实例rnrn ///创建socket并开始监听rn ///rn tryrn rn s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建一个socket对像,如果用udp协-议,则要用SocketType.Dgram类型的套接字rn s.Bind(ipe); //绑定EndPoint对像(2000端口和ip地址)rn s.Listen(5); //开始监听rn rn //Console.WriteLine("Waiting for the client connection ...");//等待客户端连接...rn //tip.Content = "Waiting for the client connection ...";rn ///接受到client连接,为此连接建立新的socket,并接受信息rn ///rn finallyrn rn while (true)rn rn Socket temp = s.Accept();//为新建连接创建新的socketrn Console.WriteLine("Connection succeeds.");//与客户端成功建立连接rn string recvStr = "";rn byte[] recvBytes = new byte[1024];rn int bytes;rn bytes = temp.Receive(recvBytes, recvBytes.Length, 0); //从客户端接受信息rn recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);rnrn ///给client端返回信息rn //Console.WriteLine("Server get message from client : 0", recvStr);//把客户端传来的信息显示出来rn string sendStr = "Ok! Client sends message success .";rn byte[] bs = Encoding.ASCII.GetBytes(sendStr);rn temp.Send(bs, bs.Length, 0); //返回信息给客户端rn temp.Close();rn rn s.Close();rn rn rnrn private void Stop_Click(object sender, RoutedEventArgs e)rn rn if (t.IsAlive)rn rn t.Abort();rn rn rn rnrn[/code]
BackgroundWoker类解决软件界面卡死问题
BackgroundWorker类解决软件<em>界面</em><em>卡死</em><em>问题</em>(包括进度条的显示),让大家不需要在网上看很多的文字和复杂的代码就能够立杆见影,这篇文章是图形与代码结合,通俗易懂,更容易让初学者容易领会!
C# 死循环导致界面卡死问题
winform程序 我用一个timer控件 每200MS执行一次 用来获取数据 当获取到数据的时候 会弹出新窗体 但是弹出的新窗体会<em>卡死</em> rn在不停用该timer控件的情况下 怎么优化其性能 (试过用<em>线程</em> 但好像也有这样的<em>问题</em> 不知道是不是我<em>线程</em>没写好)
DLL中创建线程导致界面卡死问题
设计如下:rnDLL 中创建一个<em>线程</em>CreateThread <em>线程</em>过程函数中 有一个pcap_loop(此函数会阻塞,相当于一个while循环进行处理吧)rn<em>线程</em>处理过程中有个回调函数,我在回调里面现在没做涉及UI的操作只是单纯的存储数据。rnrnrn以下是2种情况rn1.创建完<em>线程</em>之后(直接跑起来),调用sleep,之后调试的时候在<em>线程</em>的过程函数里面单步会提示<em>线程</em>已经退出,更郁闷的是直接运行的话UI 也会直接退出。rn2.创建完<em>线程</em>之后(直接跑起来),WaitForSingleObject(hThread, INFINITE),<em>界面</em>则会<em>卡死</em>rnrn谢谢!!rnrnrn
VB.net SLEEP时界面卡死问题
我写了一个自动程序,里面<em>用了</em>很多SLEEP和循环判断,程序执行到SLEEP的时候<em>界面</em>就假死了,我<em>用了</em>个Timer来 Application.DoEvents() rnMe.Refresh() rn都不管用,怎么办?
MFC消息机制+UI线程和工作线程+模式对话框原理
MFC消息机制,UI<em>线程</em>,工作<em>线程</em>,模式对话框原理,非模式对话框原理
MFC UI 线程的使用
MFC UI <em>线程</em> ,以及对UI<em>线程</em>发送消息。CWinThread的使用,以及宏 ON_THREAD_MESSAGE ,PostThreadMessage的使用。
线程学习3:MFC工作者线程和用户界面线程
  MFC中有两类<em>线程</em>,分别称之为工作者<em>线程</em>和用户<em>界面</em><em>线程</em>。二者的主要区别在于工作者<em>线程</em>没有消息循环,而用户<em>界面</em><em>线程</em>有自己的消息队列和消息循环。   工作者<em>线程</em>没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户<em>界面</em><em>线程</em>一般用于处理独立于其他<em>线程</em>执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种<em>线程</em>是没有区别的,...
MFC:界面线程
-
使用匿名线程CreateAnonymousThread方法卡死问题
使用匿名<em>线程</em>加载一个50M的大图片,希望程序能不<em>卡死</em>,为什么匿名<em>线程</em>明明是成功的,为什么还卡呢?要怎么解决?nnprocedure TForm1.FormClick(Sender: TObject);nbeginn TThread.CreateAnonymousThread(proceduren beginn image1.Picture.LoadFromFile('C:\Users\Administrator\Desktop\大图片\735296906189813293.jpg');n n end).Start;nend;n---------------------------------------------- n-
记一个腾讯信鸽引发的线程卡死问题
一天公司的游戏有大量玩家报自动战斗、种植等操作无法进行,第一时间想到可能是因为玩家的定时任务<em>线程</em><em>卡死</em>了。用jstack查看<em>线程</em>堆栈日志,发现都卡在了一个http read的地方。公司使用腾讯信鸽做手游的系统推送,卡住的地方就是调用信鸽的服务端sdk向信鸽服务器发送http请求,并等待回应的时候。因为是调用第三方jar包,所以无法直接设置读超时。在网上搜索到一种方法是通过系统变量设置超时时间: Sys
线程操作ui,导致程序卡死问题
我用主程序,建了一个<em>线程</em>,再启动一个<em>线程</em>rnrn这个<em>线程</em>每隔1分钟,抓取服务器数据rn数据返回之后直接append 到TMemo里面rnrn程序在xp下正常.rnrn但是到win 2003 下,append到TMemo,时就会导致程序<em>卡死</em>rnrn时间间隔我用的 sleep. rnrn请问如何解决 ?rnrn请不要告知我改用timerrnrn这个<em>线程</em>是另外一个<em>线程</em>创建出来的,用timer 逻辑不好控制
WPF FTP上传多线程问题界面卡死
程序功能:程序<em>界面</em>有一群人、每个人都有几张照片及视频、我要做的是将图片和视频上传到FTP服务器rn上传<em>界面</em>是弹出WPF窗口(ShowDialog)、<em>问题</em>来了、上传文件是不停的While循环写入的、所以决定在弹rn出的窗口里加个<em>线程</em>调用上传函数进行上传、<em>界面</em>显示百分比、但是<em>问题</em>来了、开了<em>线程</em>后发现执行whilern循环时弹出的窗口<em>界面</em>处于未响应状态也不能拖动、、、、、顺便来个断点续传(非本次不停续传而是下次接着续传)rnrn代码大概如下、、、、、、、分不多了求关键啊啊啊啊啊rnrn[size=14px]public delegate void NextPrimeDelegate();[/size]rn//上传事件rnprivate void BtnFinish_Click(object sender, RoutedEventArgs e)rnrn NextPrimeDelegate work = new NextPrimeDelegate(UpLoadProcessThread);rn Dispatcher.BeginInvoke(work); rnrn//上传<em>线程</em>rnpublic void UpLoadProcessThread()rnrn this.Dispatcher.Invoke(new Action(delegatern rn switch (nUpLoadMode)rn rn case 0://多人上传rn rn rn UpLoadAllPertionFiles();//对多人的每个文件 while 上传rn rn break;rn case 1://单人上传rn rn UpLoadCurPersionFiles();//对当前人的每个文件上传rn rn break;rn default:rn rnrn rn break;rn rn rn ));rnrnrnrn//FTP - 获取FTP文件断点位置rn private long GetFTPFileOffSet(System.IO.FileInfo fileinfo, string sFtpFullDirPath)rn rn string sTargetDir = GetRemoteFilePath(sFtpFullDirPath);//去掉FTP物理路径 、避免530 550rn long lFtpFileLength = 0;rn System.Net.FtpWebRequest ftp = null;rn string sTempFile = fileinfo.Name + MainWindow._sTempFileName;rn string URI = "FTP://" + sRemoteIp + "/" + sTargetDir + "/" + sTempFile;rn tryrn rn ftp = GetRequest(URI);rn ftp.Method = System.Net.WebRequestMethods.Ftp.GetFileSize;rn lFtpFileLength = ftp.GetResponse().ContentLength;rn rn catchrn rn return lFtpFileLength;rn rn return lFtpFileLength;rn rn //FTP - 上传文件(断点续传) ------------ 此处严重影响了 <em>界面</em>的响应、、、<em>线程</em>处理怎么不管用????????rn private bool UploadFile(System.IO.FileInfo fileinfo, string sFtpFullDirPath, long lOffSet = 0)rn rn //fileinfo - 文件流、sFtpFullDirPathFtp全目录rn string sTargetDir = GetRemoteFilePath(sFtpFullDirPath);rn tryrn rn string sTempFile = fileinfo.Name + MainWindow._sTempFileName;rn string URI = "FTP://" + sRemoteIp + "/" + sTargetDir + "/" + sTempFile;rnrn System.Net.FtpWebRequest ftp = GetRequest(URI);rn //设置FTP命令 设置所要执行的FTP命令,rn ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile;rn //指定文件传输的数据类型rn ftp.UseBinary = true;rn ftp.UsePassive = true;rn //告诉ftp文件大小rn ftp.ContentOffset = lOffSet;//断点偏移量 - 偏移量默认为0 rn ftp.ContentLength = fileinfo.Length - lOffSet;rn //缓冲大小设置为2KBrn const int BufferSize = 2048;rn long nSpace = fileinfo.Length / 100;rn rn byte[] content = new byte[BufferSize - 1 + 1];rn int dataRead;rn //打开一个文件流 (System.IO.FileStream) 去读上传的文件rn using (System.IO.FileStream fs = fileinfo.OpenRead())rn rn tryrn rn //把上传的文件写入流rn long length = 0;rn fs.Seek(lOffSet, SeekOrigin.Begin);//断点处读取该文件rn uint uStartTime = GetTickCount();rnrn using (System.IO.Stream rs = ftp.GetRequestStream())rn rn dorn rn //每次读文件流的2KBrn dataRead = fs.Read(content, 0, BufferSize);rn rs.Write(content, 0, dataRead);rn length += BufferSize;rn if (GetTickCount() - uStartTime >= 1000)rn rn uStartTime = GetTickCount();rn rn rn while (!(dataRead < BufferSize));rn rs.Close();rn rn rn catch (Exception ex)rn rn return false;rn rn finallyrn rn fs.Close();rn rn rnrn ftp = null;rn //设置FTP命令rn ftp = GetRequest(URI);rn ftp.Method = System.Net.WebRequestMethods.Ftp.Rename; //改名rn ftp.RenameTo = fileinfo.Name;rn tryrn rn ftp.GetResponse();rn rn catch (Exception ex)rn rn //改名不成功 保留FTP文件 返回false表示上传失败 可再传会再次进行改名rn //ftp = GetRequest(URI);rn //ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; //删除rn //ftp.GetResponse();rn return false;rn rn ftp = null;rn rn catchrn rn return false;rn rn return true;rn
jstack分析Linux java线程卡死问题
1.找到java进程号ps -ef | grep java2.查看进程下的<em>线程</em>信息,查看运行时间最长的<em>线程</em>号(可选)ps p 进程号 -L -o pcpu,pid,tid,time,tname &amp;gt; psp.info3.将运行时间最长<em>线程</em>号转为16进制,可用在线转换工具4.将thread dump信息保存为文件jstack -l 进程号 &amp;gt; jstack.log5.在jstack.log...
MFC工作线程中调用界面ribbon控件时崩溃的原因
原因在这里找到:   https://blog.csdn.net/caowei880123/article/details/5991962 不要在工作<em>线程</em>函数内操作MFC控件,应通过 发消息给主<em>线程</em>的方式,在主<em>线程</em>   中实现。 最近在编写一个基于对话框的MFC程序,在程序中创建了一个子<em>线程</em>,想通过子<em>线程</em>获取和控制主窗口中的一个编辑框显示数据,经查资料现总结如下: 1.可以在创建子<em>线程</em>的时...
MFC如何在线程中实时刷新界面
一调用就会出错啊,连调用基本的Invalidate,updatewindow都不行,怎么搞 哪个大牛有好方法
MFC创建用户界面线程
主要步骤概括: 1、使用类向导chuangj
关于MFC“UI线程
http://www.cppblog.com/Streamlet/archive/2013/05/05/199999.html
Windows 线程漫谈——界面线程和工作者线程
每个系统都有<em>线程</em>,而<em>线程</em>的最重要的作用就是并行处理,提高软件的并发率。针对<em>界面</em>来说,还能提高<em>界面</em>的响应力。 <em>线程</em>分为<em>界面</em><em>线程</em>和工作者<em>线程</em>,<em>界面</em>实际就是一个<em>线程</em>画出来的东西,这个<em>线程</em>维护一个“消息队列”,“消息队列”也是<em>界面</em><em>线程</em>和工作者<em>线程</em>的最大区别,这个词应该进到你的脑子里,根深蒂固的!如果在<em>界面</em><em>线程</em>的某个地方停住,这说明它处理不了窗口消息了,所以有时候我们就会看到整个<em>界面</em>无响应了。这种问
线程中创建窗体卡死问题
写了一个继承于TThread的<em>线程</em>类,在它的Execute方法中创建了窗体TForm1:rnForm1 := TForm1.Create(nil);rnrn这句代码在exe中<em>卡死</em>,而整个单元放到dll中却可以正常工作,为啥???
winform中两个线程卡死问题
[code=csharp]rnfor (int i = 0; i < scanPf.Count; i++)rn rn scanObject so = new scanObject();rn so.gameid = scanGame;rn so.pfInfo = scanPf[i];rn so.lstGags = scanServer;rn arrThread[i] = new Thread((ParameterizedThreadStart)ScanPlatform.startScan);rn arrThread[i].Start(so);rn rn[/code]rn[code=csharp]rn static class ScanPlatformrn rn public static void startScan(Object so)rn rn ………………rn rn}rn[/code]rnrn刚接触<em>线程</em>,请教下rn当scanPf.Count=1,也就是至启动一个<em>线程</em>时,能正常运行,rn当scanPf.Count=2启动两个进程时,程序就会卡着不动,是怎么回事呢?
mfc界面问题
现有MFC单文档工程的视图类继承CScrollViewrn我目前需要在上面添加一些功能,主要是在视图中显示表格数据,我添加了一个类,继承CListCtrl,动态创建了一个表格,但是显示的表格大小怎么不是整个视图?下面还有一块空白部分[img=https://img-bbs.csdn.net/upload/201611/18/1479431756_756618.png][/img]rn这是视图类rnclass CZoomView : public CScrollViewrn我在视图类中加的创建的listctrl的代码///中间为我所添加的内容////rn[code=c]void CZoomView::OnInitialUpdate()rnrn CScrollView::OnInitialUpdate();rnrn m_layout.cx = 2000;rn m_layout.cy = 1000;rnrn m_page.cx = m_layout.cx/2;rn m_page.cy = m_layout.cy/2;rn m_line.cx = m_layout.cx/50;rn m_line.cy = m_layout.cy/50;rn SetScrollSizes(MM_TEXT, m_layout, m_page, m_line);rnrn m_bInitialSize = TRUE;rnrn if (m_pdcMemory->GetSafeHdc() == NULL)rn rn CClientDC dc(this);rn OnPrepareDC(&dc); rn m_pdcMemory->CreateCompatibleDC(&dc);rnrn // makes bitmap same size as display windowrn CRect clientRect(0,0,0,0);rn GetClientRect(clientRect);rn if (m_pBitmap != NULL) rn rn delete m_pBitmap;rn m_pBitmap = NULL;rn rn m_pBitmap = new CBitmap();rn m_pBitmap->CreateCompatibleBitmap(&dc, clientRect.right,rn clientRect.bottom);rn rnrn ////////////////////////////////////////////////////rn CRect rect;rn GetWindowRect(&rect); rn rect.left = 0;rn rect.top = 0;rn rect.right = 1800;rn rect.bottom = 700;rn //虚拟列表,用于限制一次性限制多少数据,防止<em>界面</em>卡http://blog.csdn.net/milanleon/article/details/29195657 滚动条//WS_VSCROLL和WS_HSCROLLrn g_pFlyCaptureView->m_userMamagerDada->Create(/*WS_CHILD|WS_VISIBLE|*/WS_BORDER|LVS_REPORT|LVIS_FOCUSED|WS_VSCROLL|WS_HSCROLL|LVS_SHOWSELALWAYS, rect, this, 1500);rnrn //样式扩展rn g_pFlyCaptureView->m_userMamagerDada->SetExtendedStyle(LVS_SHOWSELALWAYS|LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_GRIDLINES); rn //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////rnrn[/code]列表数据是通过一个对话框的数据查询得来rn<em>问题</em>1 为什么会出现我截图的这种情况,这个视图类原来是显示图片的,但是没<em>问题</em>啊,图片是被添加在整个视图类中,而且大小缩放都可以啊!rn<em>问题</em> 2 我是对话框查询数据,然后再对话框类中为listctrl加载数据,如果listctrl显示之前,视图中有图片,我该如何刷新啊,对话框按钮的消息处理中调用视图类的updatewindow貌似没用呢rn
MFC界面问题
我想问下做一个项目rn主<em>界面</em>是四个小窗口(田),每个窗口显示不同的内容,有控制按钮,如打开,关闭之类的 应该用文档类实现吗??求推荐书籍??
锐捷交换机ACL配置下载
锐捷交换机ACL配置 基于时间的acl配置 相关下载链接:[url=//download.csdn.net/download/xumingwei209/2329977?utm_source=bbsseo]//download.csdn.net/download/xumingwei209/2329977?utm_source=bbsseo[/url]
keilc51,串口调试工具,STC烧写工具,格式后恢复工具四个常用工具下载
keilc51,串口调试工具,STC烧写工具,格式后恢复工具,里面有四个常用的工具,是学习单片机汇编和keilc语言必不可少的东西。下了肯定不用后悔的! 相关下载链接:[url=//download.csdn.net/download/jlp11260/2745294?utm_source=bbsseo]//download.csdn.net/download/jlp11260/2745294?utm_source=bbsseo[/url]
UNIX高级编程.pdf下载
UNIX高级编程.pdfUNIX高级编程.pdfUNIX高级编程.pdfUNIX高级编程.pdfUNIX高级编程.pdf 相关下载链接:[url=//download.csdn.net/download/mostovoi1234/3251121?utm_source=bbsseo]//download.csdn.net/download/mostovoi1234/3251121?utm_source=bbsseo[/url]
我们是很有底线的