如何监控一个c#程序

Posted

技术标签:

【中文标题】如何监控一个c#程序【英文标题】:How to monitor a c# program 【发布时间】:2016-01-26 05:09:32 【问题描述】:

我有一个简单的 c# 程序(用 vs2015 开发的 fw 4.5)。 该程序使用少量表单、基本控件和 windows media player api。

当我从 vs2015(按 F5)运行程序时,它运行良好。 当我尝试通过双击它从文件系统(通过转到我的项目目录下的“发布”目录)运行它时,它只是加载并加载但没有任何反应。我没有收到任何错误,程序也没有开始运行。

我在开始时有一个 try/catch,应该会弹出一条消息或写入日志文件,但我仍然什么也没得到。

有没有办法监视我的程序以检查它在哪里失败或它试图做的事情导致它崩溃?

(我试过兼容模式,没用)。

--编辑-- 我在那台计算机上安装了 Avira 防病毒软件

谢谢。

【问题讨论】:

也许检查你的任务管理器,看看程序是否在那里运行?此外,请确保输出解决方案中的正确项目。 尝试暂时禁用您的防病毒软件? 你有没有尝试查看 Windows 事件查看器? 尝试从“debug”文件夹而不是“release”文件夹运行程序 @ZoRo 这似乎与 Avast 沙盒功能有关,理论上可以在其他反恶意软件套件上发生。如果您编辑您的问题以提及 avast 并对其进行概括(因为问题完全取决于 Avast,而不是 VS 或 .Net Framework),您可以编写自己的关于禁用 avast 的答案。然后其他用户可以将您的问题链接为半规范问题,以解决 Avast 的问题(最近在其他地方多次看到相同的场景,但从未发生在我的身上,所以这似乎是具体情况) 【参考方案1】:

在你的 Program.cs 中

static void Main()

    AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
    ....

并添加静态方法来记录异常

    private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    
        _logger.Error(.....);
    

【讨论】:

【参考方案2】:

嗯,感谢@Martheen 的想法,我尝试禁用我的防病毒软件(我有 Avira),它似乎有效。

我不知道它为什么被阻止并且 Avira 没有通知我有关阻止的信息,但是在禁用 Avira 后,我的程序运行顺利。再次启用 Avira 时,我的程序停止运行。在调试版本和发布版本都尝试了几次之后,我可以确认禁用 Avira(右键单击任务栏中的 Avira 图标,选择“禁用”)解决了我的问题。

【讨论】:

以上是关于如何监控一个c#程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 c# 监控 SQL Server 表更改?

如何使用 c# 监控 SQL Server 表更改?

C# 如何编写程序监控键盘,即使程序的窗体不是当前活动窗体

如何监控 Microsoft Outlook 以确定加载时间和使用第三方程序、PowerShell 或 C# 所涉及的因素?

C#关于软件界面无响应BUG报警程序异常退出等情况的监控和报警

C#实现一个弹窗监控小程序