一个有关winform调试的问题,运行到断点会卡1-2秒
当代码运行到断点 void client_ReceiveMsg(string _msg)的时候,程序就会卡住1-2秒,然后按F10直接跳出断点继续运行。不知道是什么原因
我是在做UDP数据传输,客户端接收到服务器给与的消息后触发事件,然后就卡..把断点加在事件中间也会执行到,仍然卡……
当代码运行到断点 void client_ReceiveMsg(string _msg)的时候,程序就会卡住1-2秒,然后按F10直接跳出断点继续运行。不知道是什么原因
我是在做UDP数据传输,客户端接收到服务器给与的消息后触发事件,然后就卡..把断点加在事件中间也会执行到,仍然卡……
解决方案 »
- 十一快乐,还在工作。全屏窗体statusStrip问题
- vs调试的时候有时候报错System.Data.SqlClient.SqlException: 拒绝了对对象 'sp_sdidebug'这个怎么会是啊?怎么而解决?
- 求一统计sql语句
- DatagridView 窗体之间相互传值!
- 读取二进制图片的问题
- 关于给用户添加权限的问题,只是做效果,不涉及后台。
- WebRequest、WebResponse问题请教
- C#送分问题18
- 如何判断一串字符串中是否包含7位以上的数字?
- 请问多线程同时访问数据库大家是怎么处理的
- 有谁帮忙做个在线升级啊?来点注意也好啊……
- pl/sql中top语句应该怎么写???
设置断点就是让它卡
另外 你用的Receive接受信息可能是同步的 没接收数据之前 会卡住
关键是步进,这个都会让程序执行变慢,这个很正常。
加上断点后程序本身卡5秒左右,加断点的作用不是让它卡..是想观察一下程序运行的路线及值是否准确,卡住以后什么都做不了,按逐语句自己跳出了,另外程序运行结果基本上是正确的,但是弹出的窗口也会卡住..
PageLoad内部执行
client = new Client(IP地址, 端口号, 人员ID);
client.ReceiveMsg += new Client.ReceiveMsgDel(client_ReceiveMsg);
client.Start();void client_ReceiveMsg(string _msg) --F9断点,进来就卡5秒.按F10退出调试
在你的程序中client_ReceiveMsg是不是被工作线程调用了,如果这样的话需要使用Invoke或BeginInvoke交给主线程调用,将client_ReceiveMsg修改一下:
private void client_ReceiveMsg(string _msg)
{
if (InvokeRequired)
{
BeginInvoke((MethodInvoker)(()=>client_ReceiveMsg(_msg)));
return;
}
// 原来的函数代码
}
解决方式:使用Application.idle事件替换自定义事件,监控Client类中的变量
但是我还是对系统卡死的问题不明白,为什么会卡5秒,为什么断点会不继续走,为什么我给实例化Client类的方法单独开一个线程还是会卡。
希望有经验人士帮助解答