开发中,经常用 System.Diagnostics.Debug.WriteLine()方法输出中间数据至vs输出窗口中,以方便调试,对于一些数据处理任务,也会将输出窗口作为任务进度信息输出。
最近一个数据处理任务中,由于处理的数据量比较大,连续的、大量的向输出窗口输出信息,导致整个VS卡死,业务逻辑不执行(一开始以为是其他业务逻辑导致的卡死),后来通过人为增加sleep()等方法,都无法解决问题。
测试中发现,将输出语句取消掉,可以极大的提高执行效率,大体一分钟内就执行完成。之前输出窗口卡时,随随便就几分钟没反应。
网上检索,通过该方法,将输出中的内容进行强制清空,发现可以解决卡死问题,但还是很卡。
- DTE2 ide = (DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.11.0");
- //ide.ToolWindows.OutputWindow.OutputWindowPanes.Item("Debug").Clear();
- //System.Runtime.InteropServices.Marshal.ReleaseComObject(ide);
- if (ide != null)
- {
- ide.ExecuteCommand("Edit.ClearOutputWindow", "");
-
- System.Runtime.InteropServices.Marshal.ReleaseComObject(ide);
- }