我编写了一个使用 Linq 与 Microsoft SQL Server 对话的程序。它不间断地运行,并且不时对数据库进行一些更改,主要是在午夜。这行得通。但是几天后,该过程随机消失了。系统事件日志中没有异常窗口或条目。
现在,我以某种方式“修复”了它。我做了什么:每次它做了一些更改时,我只是重新连接到 sql server。
sql server uns 在同一台机器上 btw。并且还有其他程序正在使用该 sql server 运行。所以它不能下降或类似的东西。此外,我希望在那种情况下有异常(exception)。
以防万一,这很重要:还有其他客户端使用同一个数据库。
.net 应用怎么可能就这么消失了?它不应该抛出异常吗?即使它使用了一些 native 代码,而这个过程没有,不会有像“windows terminated this process because of xxxxx”这样的消息吗?
最佳答案
How is it possible a .net app can just disappear?
发生了三种情况之一:程序正常终止,程序异常终止自身(通过异常或快速失败),或者其他进程终止了该进程。
Shouldn't it throw exceptions?
我不明白这个问题。
And even if it uses some native code, which this process does not, wouldn't there be a message like "windows terminated this process because of xxxxx"?
嗯,首先,它可能不是 Windows 终止进程。例如,可能有人将调试器附加到进程,然后指示调试器终止进程。
有些应用程序在异常终止时会产生噪音,而有些则不会——特别是根据定义以快速失败终止的应用程序不会花时间缓慢终止——写入日志并让您知道发生了什么,等等。那是因为他们正在终止尽可能快。
Now, I "fixed" it somehow. What I did: I just reconnect to the sql server every time it does some changes
如果我处于那种情况,我更愿意在尝试解决问题之前通过了解问题来解决问题。
关于C# + Linq 程序随机消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130026/