开机自启动,程序无响应。

FainSheeg 2018-11-27 11:49:52
如题,自己写的一个程序,用到了多线程,需要操作局域网数据库,需要连外网的一个API获取数据。设置了开机自启动,之前一直正常运行。最近一段时间,每次一开机启动就直接弹出无响应的框,让我关闭或者调试,程序也没报错。关掉之后再开就没问题了。猜测可能是刚开机某些服务尚未运行。日志如下:
应用程序: 病案室数据库后台更新程序.exe
Framework 版本: v4.0.30319
说明: 由于未经处理的异常,进程终止。
异常信息: System.NullReferenceException
在 病案室数据库后台更新程序.Main.RefreshFaultyRecords()
在 System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
在 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
在 System.Threading.ThreadHelper.ThreadStart()



有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

看不懂,只知道应该是多线程的问题。求教如何解决?
...全文
187 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
FainSheeg 2018-12-24
  • 打赏
  • 举报
回复
感谢各位大大们的建议。线程内代码都套了try,不折腾了,设置开机15分钟后启动了事。
大然然 2018-12-18
  • 打赏
  • 举报
回复
线程里没有try catch 出错了就会挂掉
dylike 2018-12-17
  • 打赏
  • 举报
回复
RefreshFaultyRecords这段里,先判断网络是否连接,如果用到数据库,检查数据库是否已启动(尤其是数据库服务)
cheng2005 2018-11-27
  • 打赏
  • 举报
回复
引用 3 楼 良朋 的回复:
是因为网卡还没准备好啊!
你设置开机自启动, 程序启动了,网卡还没准备好,你要访问局域网,所以就会出错。
你可以做个循环判断,网络准备好了,再继续执行。

特别好奇的是1楼,怎样设置开机 1 分钟之后再启动相关进程? 有什么简单稳定的办法吗?

计划任务
良朋 2018-11-27
  • 打赏
  • 举报
回复
是因为网卡还没准备好啊!
你设置开机自启动, 程序启动了,网卡还没准备好,你要访问局域网,所以就会出错。
你可以做个循环判断,网络准备好了,再继续执行。

特别好奇的是1楼,怎样设置开机 1 分钟之后再启动相关进程? 有什么简单稳定的办法吗?
xian_wwq 2018-11-27
  • 打赏
  • 举报
回复
1.如果分析代码看不出异常,
把初始化涉及各个环节的日志输出,以判定问题点

2. 通过 Application.ThreadException和
AppDomain.CurrentDomain.UnhandledException来捕获异常
吉普赛的歌 2018-11-27
  • 打赏
  • 举报
回复
1. 在程序中, 所有可能出异常的地方, 都要加上 try catch, 并输出异常到 日志文件。 2. 可以设置开机 1 分钟之后再启动相关进程。 或者有异常重试 100 次。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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