登录C#时,如何学习调用当前方法的方法的名称?我知道所有这些System.Reflection.MethodBase.GetCurrentMethod()
,但我想在堆栈跟踪中向下迈出一步.我考虑过解析堆栈跟踪,但我希望找到一种更清晰,更明确的方法,比如Assembly.GetCallingAssembly()
方法.
我需要一个准确的计时器,而DateTime.Now似乎不够准确.从我读到的描述中,System.Diagnostics.Stopwatch似乎正是我想要的.
但我有恐惧症.我对在实际生产代码中使用System.Diagnostics中的任何内容感到紧张.(我广泛使用Asserts和PrintLns等进行调试,但从未用于生产.)我不仅仅是尝试使用计时器来测试我的功能 - 我的应用程序需要一个实际的计时器.我在另一个论坛上看到System.Diagnostics.StopWatch仅用于基准测试,不应该在零售代码中使用,尽管没有给出理由.这是正确的,还是我(以及任何发布该建议的人)对System.Diagnostics过于封闭?即,在生产代码中使用System.Diagnostics.Stopwatch是否可以?谢谢阿德里安
我可能已经知道了这一点,但我不确定,我也没有记录.
我在开发过程中经常使用System.Diagnostics.Debug.WriteLine来跟踪变量或异常的变化,因为我正在调试代码.这意味着只有在开发过程中才能更容易地开发和理解发生的事情.我通常要么注释掉代码,要么在我去制作时将其删除.
我想知道如果我忘记评论代码会发生什么.比如说,在开发周期中,我正在跟踪可能使用Debug.Write Line将连接sting到输出窗口的错误信息.这显然可以在开发时使用,但我想知道当我上线时,如果这里存在风险.有人可以将调试器附加到我的实时可执行文件并捕获此输出吗?或者它只是在Visual Studio中产生输出?
那么当我们从调试切换到发布时呢?如果我们编译发布版本,编译器是否会忽略此代码?
最近,我在构建我的程序时变得更加健康,我观察到大多数程序需要2或3分钟才能执行,当我检查任务调度程序时,我发现它们消耗了100%的CPU使用率,可以我在代码中以编程方式限制了这种用法?这肯定会让我在给定的时间运行多个程序.
谢谢,Nidhi
如何在标准跟踪,Logger.NET,企业库,log4net或Ukadc.Diagnostics之间进行选择?
是否存在一个比另一个更合适的情况?那会是什么?(ASP.NET,控制台应用,Azure云,SOHO,企业...)
有什么好处或缺点?
我是否错过了其他主要的日志记录框架?
我在这些之间完全感到困惑4.ElapsedMilliseconds(long),ElapsedTicks(long),Elapsed.TotalMilliseconds(double)和Elapsed.Milliseconds(int)之间有什么区别?
我有一个功能
{
Stopwatch sw = new Stopwatch();
sw.Start();
MyTimeConsumingAction();
sw.Stop();
sw.//what?
}
Run Code Online (Sandbox Code Playgroud)
如何从秒表对象的已用属性(以毫秒为单位)获取长时间运行的进程所消耗的正确时间?
编辑:我试过msdn文档,但它没有详细说明..
我像这样运行ffmpeg:
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo(ffmpegPath, myParams);
p.Start();
p.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
...但问题是带有ffmpeg的控制台会立即弹出并消失,所以我无法获得任何反馈.我甚至不知道该过程是否正确运行.
那么我怎么能:
告诉控制台保持打开状态
在C#中检索控制台显示的内容
谁知道System.Diagnostic.Trace
和System.Diagnostic.TraceSource
班级之间的区别?
我一直在使用Trace来完成我的大部分项目,而且我刚刚发现了TraceSource
前几天.他们似乎提供类似的API,是一个比另一个更好?
如何将MS Windows操作系统版本号转换为产品名称?
例如,在.NET中,可以使用以下两个属性来确定该产品是MS Windows Vista Ultimate Edition:
Environment.OSVersion.Platform returns Win32NT
Environment.OSVersion.Version returns 6.0.6001.65536
如何使用System.Diagnostics.PerformanceCounter跟踪进程的内存和CPU使用情况?
.net ×6
c# ×6
logging ×2
performance ×2
stopwatch ×2
windows ×2
.net-4.0 ×1
asp.net ×1
cpu-usage ×1
debugging ×1
diagnostics ×1
log4net ×1
nlog ×1
stack-trace ×1
timer ×1
tracesource ×1
version ×1