社区
C#
帖子详情
winform 连续运行三天 出错
在路上20130607
2010-12-01 03:38:20
写了个发短信的程序,放在服务器上,分了两个线程A,B
A 用来扫描数据库 发现有待发送的信息 ,就发送
B 用了接收短信
刚启动的时候,没问题 可是多了
大概三天左右
就不能发送了
因为时间太久,没办法调试出是什么问题
还麻烦各位帮忙想想 是什么问题
...全文
275
32
打赏
收藏
winform 连续运行三天 出错
写了个发短信的程序,放在服务器上,分了两个线程A,B A 用来扫描数据库 发现有待发送的信息 ,就发送 B 用了接收短信 刚启动的时候,没问题 可是多了 大概三天左右 就不能发送了 因为时间太久,没办法调试出是什么问题 还麻烦各位帮忙想想 是什么问题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
在路上20130607
2010-12-01
打赏
举报
回复
已经添加日志·········
在路上20130607
2010-12-01
打赏
举报
回复
[Quote=引用 29 楼 walkghost 的回复:]
养成连接后sleep的习惯,我一般sleep15ms。
查询你的程序运行日志,看看是哪儿报错了。运行到何处停止了。最好把你的vs调试3天看看。
[/Quote]
你太会开玩笑了
估计是某个时候断网了
导致这之后的信息都不能发布了
jialine0426
2010-12-01
打赏
举报
回复
是子线程运行出错了,抛出到主线程,导致程序出错,一般能在计算机管理器的Event Viewer中找到一个很奇怪的错误。所以写多线程的应用程序,在最外层还要包层try catch,而且catch不写任何代码。你可以做一个实验,在你的子线程中throw 一个Exception,然后会看到弹出一个对话框,你再去看看Event Viewer,找一下有没有刚才报的类似的日志。
walkghost
2010-12-01
打赏
举报
回复
养成连接后sleep的习惯,我一般sleep15ms。
查询你的程序运行日志,看看是哪儿报错了。运行到何处停止了。最好把你的vs调试3天看看。
gq198718
2010-12-01
打赏
举报
回复
受益匪浅!
LIUMRZY
2010-12-01
打赏
举报
回复
没处理异常!
在路上20130607
2010-12-01
打赏
举报
回复
[Quote=引用 23 楼 gohappy2008 的回复:]
断网后 又重新连接上, 需要再重新启动线程。
[/Quote]
为什么要重启线程呢?
在路上20130607
2010-12-01
打赏
举报
回复
[Quote=引用 22 楼 zenghd 的回复:]
再加个另外,什么情况下会出现socket <= 0?
if (socket > 0)这个条件是不是应该放到while里面?
[/Quote]
好的 谢谢
gohappy2008
2010-12-01
打赏
举报
回复
断网后 又重新连接上, 需要再重新启动线程。
ZengHD
2010-12-01
打赏
举报
回复
再加个另外,什么情况下会出现socket <= 0?
if (socket > 0)这个条件是不是应该放到while里面?
在路上20130607
2010-12-01
打赏
举报
回复
[Quote=引用 18 楼 cdglynn 的回复:]
还补充一点,就是应用程序的界面如果被多线程刷的过于频繁也会导致程序挂掉,可考虑使用缓存减少界面的刷心频率
[/Quote]
这个放心 基本没有什么界面
在路上20130607
2010-12-01
打赏
举报
回复
[Quote=引用 15 楼 cdglynn 的回复:]
我想代码运行了三天都没出现问题,那说明逻辑是没有问题的,应该是你的代码没有对异常进行处理或没有一个好的异常处理机制和容错机制。
自动运行的无人值守程序,往往对稳定性要求比较高,你要充分的考虑到网络异常、数据库异常、甚至机器DOWN机等异常时怎么办。
为了保证线程不会崩溃,往往在线程方法里存在两个try,第一个是线程方法的第一行到线程方法的最后一行,第二个在线程循环内的第一行到循环体的最后一行……
[/Quote]
是啊 三天内 有断网的情况 就连不上短信机了
谢谢 恍然大悟
也谢谢楼上的各位
我再写个 试试看
reggiekiller
2010-12-01
打赏
举报
回复
日志日志
cdglynn
2010-12-01
打赏
举报
回复
还补充一点,就是应用程序的界面如果被多线程刷的过于频繁也会导致程序挂掉,可考虑使用缓存减少界面的刷心频率
在路上20130607
2010-12-01
打赏
举报
回复
[Quote=引用 14 楼 bloodish 的回复:]
1)加日志,记录运行状态
2)可能是线程阻塞了,如果你的服务器上装有VS可调试,尝试这样处理:
调试模式下,程序一启动就新开一个线程,做简单的While+Sleep.
在程序运行中这个线程会一直在运行.
几天之后,如果发现你的程序挂起,在Sleep处设置断点,
当断点停住时,通过VS的查看当前线程功能(Debug->Windows->Threads),
可以看到到底是哪个线程挂起……
[/Quote]
牛人 但是人家的服务器 不让我这么做
cdglynn
2010-12-01
打赏
举报
回复
我想代码运行了三天都没出现问题,那说明逻辑是没有问题的,应该是你的代码没有对异常进行处理或没有一个好的异常处理机制和容错机制。
自动运行的无人值守程序,往往对稳定性要求比较高,你要充分的考虑到网络异常、数据库异常、甚至机器DOWN机等异常时怎么办。
为了保证线程不会崩溃,往往在线程方法里存在两个try,第一个是线程方法的第一行到线程方法的最后一行,第二个在线程循环内的第一行到循环体的最后一行。
出来异常一定要把异常堆栈(不是message)记录下来
另外还需要在应用程序级和应用程序域级加入异常捕获(记不清楚了,好似是Application.ThreadException和AppDomain.UnhandledException,自己查查吧!),这两个捕获是为了捕获我们程序当中未处理或忘记处理的异常的。
bloodish
2010-12-01
打赏
举报
回复
1)加日志,记录运行状态
2)可能是线程阻塞了,如果你的服务器上装有VS可调试,尝试这样处理:
调试模式下,程序一启动就新开一个线程,做简单的While+Sleep.
在程序运行中这个线程会一直在运行.
几天之后,如果发现你的程序挂起,在Sleep处设置断点,
当断点停住时,通过VS的查看当前线程功能(Debug->Windows->Threads),
可以看到到底是哪个线程挂起,或者说具体执行到哪一步挂起.
你可以尝试一下.
在路上20130607
2010-12-01
打赏
举报
回复
[Quote=引用 12 楼 ymk 的回复:]
用哪个短信提供商,可能就是它的问题。还是通过硬件实现?
[/Quote]
用的是神州数码的短信机
应该不会是硬件的问题
因为程序重启一下 就能发送了
ymk
2010-12-01
打赏
举报
回复
用哪个短信提供商,可能就是它的问题。还是通过硬件实现?
在路上20130607
2010-12-01
打赏
举报
回复
[Quote=引用 9 楼 wuyq11 的回复:]
看看资源消耗情况,记录操作日志
try catch
[/Quote]
看看资源消耗 这句话是什么意思
不好意思 我不太明白
我看过服务器的内存占用情况
三天的基本没变化
加载更多回复(9)
C#(
WINFORM
)学习
一、C#基础 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float等)、枚举类型和结构类型。引用类型包括类 (Class)类型、接口类型、委托类型和数组类型。 变量的类型声明 每个变量必须预先声明其类型
_CrtIsValidHeapPointer
出错
的解决方法
前段时间,封装一个库,开始用VS2010封装的,写了一个demo,测试完全没有问题,后来同事需要调用我的那个库,需要我编译一个VS2003版的dll库给他,我就重新封装了一个库,写了个demo一测试,
运行
是没问题,快结束时,总是报_CrtIsValidHeapPointer
出错
;因为开始在10版本里面没有问题,封装了03版本才出的问题,总是觉得自己是不是库的接口什么地方写的有问题,导致出栈入栈有问
C# 实现的ADB连接 android
C# 实现的ADB连接 android
_CrtIsValidHeapPointer
出错
的解决方法,找到了根本原因啦! 此博文包含图片
在不同的模块分配的内存,释放的时候会出现此问题,而此问题,只在Debug模式会提示,Release模式不会提示。但不提示并不代表没有错误,一定要解决之。解决的方法是:在哪个模块分配的内存,就在哪个模块释放。 这个错误有两种可能:一.释放的问题1,内存不能跨模块分配和释放,模块分配的内存必须由该模块自己来释放。应该在DLL中再加一个方法,比如MemRelease,主程序调用这个方法来释放内存。2,就...
C#文件操作从入门到精通(1)——INI文件操作
本文详细介绍ini文件在
winform
中的应用,纯属项目实战经验!
C#
110,532
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章