如何判断 C#程序是不是处于调试状态
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断 C#程序是不是处于调试状态相关的知识,希望对你有一定的参考价值。
1.通过#if预编译指令对DEBUG进行判断,如下:#if DEBUG
// 调试用代码
……
……
#endif
2.DotNet程序的调试,是DotNet程序员必备的技能之一,开发出稳定的程序、解决程序的疑难杂症都需要很强大的调试能力。DotNet调试有很多方法和技巧。现在本文就介绍一下借助DebugView工具进行调试的方法,以及由DebugView引申出来的知识点。
3.C#判断是否运行在调试模式下
很多情况下我们希望一些调试信息不输出,但又不至于用到trace和debug的一些功能,仅仅是包一下几句话,非调试状态就不运行,有这些用法
using 参考技术A C#中也有. 定义可以在cs源代码中定义,也可以在项目属性中定义。 代码中定义格式如下: #define DEBUG 判断的话,可以用: #if DEBUG #else #endif 也就是说不需要defined这样的语句了。 其实在.net中,还有Condition这样的属性可供使用,
C# 如何判断 DVD 驱动器托盘是不是打开?
【中文标题】C# 如何判断 DVD 驱动器托盘是不是打开?【英文标题】:C# How to tell if DVD drive tray is open?C# 如何判断 DVD 驱动器托盘是否打开? 【发布时间】:2011-09-14 13:34:27 【问题描述】:我有一个用 C# 编写的 DVD 读取和刻录应用程序。我希望能够检测空驱动器(无磁盘)和打开驱动器之间的区别。
编辑:在谷歌搜索之后,我认为更好的问题描述是“我想访问驱动器托盘状态 - 打开或关闭”
我可以使用
ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk WHERE DriveType= 5")
查找系统中的所有 dvd 驱动器,属性告诉我驱动器中是否有磁盘。 Access
属性告诉我是否有空白磁盘。
但Access
在驱动器打开以及驱动器关闭并为空时为空。当驱动器打开或关闭时,我看不到任何其他属性发生变化。
有谁知道区分开放式驱动器和封闭式空驱动器的方法?
我使用的是 Win7,但理想情况下该解决方案也适用于 XP 和 Vista。
【问题讨论】:
另见***.com/questions/3969435/check-cd-rom-tray-status @Ian Ringrose:为什么?这个问题没有答案。 我不能 100% 确定你是否能做到。例如,它应该为驱动器中的插槽返回什么? 在这种情况下我可以忍受失败,迈克尔。驱动器必须知道它是打开还是关闭。并且您可以使用 c# 打开和关闭驱动器 - 因此必须可以访问托盘状态。 【参考方案1】:IOCTL_DISK_GET_LENGTH_INFO 可能对您有用。
【讨论】:
感谢您的回复。我会尝试,一旦我弄清楚如何在 c# 中。但是从阅读中听起来这个参数会告诉我驱动器的大小 - 我不明白它如何告诉我 DVD 驱动器是打开还是空的? 不确定 Stijn 的解决方案是否最好,但阅读文档可以处理错误情况:如果操作失败或挂起,DeviceIoControl 返回零。要获取扩展的错误信息,请调用 GetLastError。 @Sugrue 我现在无法尝试,但我假设空驱动器(0 或 null)和打开驱动器(700MB 或不同值)的大小会不同。 【参考方案2】:MediaLoaded 属性 (Win32_CDROMDrive) 将告诉您是否已加载光盘。我有点困惑你在找什么:
-
磁盘托盘打开
磁盘托盘已关闭 - 没有介质
磁盘托盘已关闭 - 有媒体
MediaLoaded 属性将在情况 2 (False) 和 3 (True) 中有所帮助
【讨论】:
BTW MediaLoaded 在 Win32_CDROMDrive 对象上可用 我想区分 1 和 2。就像我想知道驱动器是打开的还是驱动器是关闭的并且是空的。 TargetInstance 属性可以使用。一旦光盘被弹出,它将为空。如果加载了光盘,则它不会为空 嗨 Lokeshwer。如果没有磁盘且驱动器关闭,TargetInstance 会有什么值? 我理解这个问题。所以我不确定我们是否可以直接使用 WMI 对象进行推断以上是关于如何判断 C#程序是不是处于调试状态的主要内容,如果未能解决你的问题,请参考以下文章