在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
原理: 被測程序之間定義兩個記錄點。第一個記錄點記錄開始,第二個記錄點記錄結束,得出耗時,保存到文件。這兩個記錄點用標志參數來對應。
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace test { public partial class Form1 : Form { public Form1() { LogTime(" Initialize", "a"); InitializeComponent(); LogTime(" messB", "b"); MessageBox.Show("B"); LogTime(" MessB", "b"); MessageBox.Show("c"); LogTime("MessC", "b"); LogTime("Initialize", "a"); } #region 記錄時間 #region 變量定義 /// <summary> /// 定義範型保存記錄時間 /// </summary> static Dictionary<string, DateTime> dytLogTime = new Dictionary<string, DateTime>(); /// <summary> /// 保存信息 /// </summary> static Dictionary<string, string> dyLogInstruction = new Dictionary<string, string>(); /// <summary> /// 時間變量 /// </summary> static DateTime dtTime; /// <summary> /// 存放文件的路徑 /// </summary> static string sPathFile = ""; /// <summary> /// 是否冊除過文件 /// </summary> private static bool IsDeleteOldFile = false; #endregion #region 常量定義 /// <summary> /// "Sign:"常量 /// </summary> private const string csSign = " Sign:"; /// <summary> /// "Start"常量 /// </summary> private const string csStrat = " Start"; /// <summary> /// End常量 /// </summary> private const string csEnd = " End"; /// <summary> ///Total常量 /// </summary> private const string csTotal = " Total:"; /// <summary> /// "— — —"段落分隔常量 /// </summary> private const string csLine = "\r\n— — — — — — — — — — — — — — — — \r\n"; /// <summary> /// "——"分隔符常量 /// </summary> private const string csDivide = "——"; /// <summary> /// 文件名常量 /// </summary> private const string csFileName = "ByCooDebugTime.txt"; /// <summary> /// 空格常量 /// </summary> private const string csSpace = " "; /// <summary> /// 日期格式 /// </summary> private const string csDateFormat = "MM-dd HH:mm:ss ffff"; /// <summary> /// ":"冒號常量 /// </summary> private const string csColon = ": "; #endregion /// <summary> /// 刪除存在的文件 /// 第一次記錄時間時,判斷是否文件是否存在,如果存在,將舊的記錄文件刪除。 /// </summary> private static void DeleteOldFile() { IsDeleteOldFile = true; GetPathFile(); if (System.IO.File.Exists(sPathFile)) { System.IO.File.Delete(sPathFile); } } /// <summary> /// 記錄時間方法 /// 記錄時間並計算出兩個相同標志之間的時間差 /// 文件保存在桌面的 當天日期+ByCooDebugTime.txt中 /// </summary> /// <param name="asInstruction">說明信息</param> /// <param name="asSign">標志</param> private static void LogTime(string asInstruction,string asSign) { //記錄文件是否被刪除過 if (IsDeleteOldFile==false) { DeleteOldFile(); } string sRunFile = Application.StartupPath; string sContent = ""; //實例化時間變量 dtTime=new DateTime(); //得到當前時間 dtTime = DateTime.Now; /* * 判斷標志是否一致 * 如果不一致,則表明是新的記錄任務,將標志及時間增加到泛型中保存 * 如果一致,則表明此為任務的結束,記錄時間並移除泛型中的內容 * */ if (!dytLogTime.ContainsKey(asSign)) { //將開始時間記錄到泛型中 dytLogTime.Add(asSign, dtTime); //保存說明 dyLogInstruction.Add(asSign, asInstruction); //記錄開始時間 sContent = csLine + asSign + csSpace + asInstruction + csStrat + csColon + dtTime.ToString(csDateFormat); WriteContentFile(sContent); } else { //記錄結束時間 sContent = asSign + csSpace + asInstruction + csEnd + csColon + dtTime.ToString(csDateFormat); WriteContentFile(sContent); //得到時間差 string sTotalTime = Convert.ToString(dtTime - dytLogTime[asSign]); //記錄時間差 sContent = asSign + "(" + dyLogInstruction[asSign] + csStrat + csDivide + asInstruction + csEnd + ")" + csTotal + sTotalTime + csLine; WriteContentFile(sContent); } } /// <summary> /// 將字符寫入文件 /// 文件名為 當天日期+ByCooDebugTime.txt /// </summary> /// <param name="asContent"></param> private static void WriteContentFile(string asContent) { StreamWriter mFileWrite; try { mFileWrite = new StreamWriter(sPathFile, true, Encoding.Default); //將t內容寫入文件 mFileWrite.WriteLine(asContent); } catch (Exception e) { throw e; } mFileWrite.Flush(); mFileWrite.Close(); mFileWrite.Dispose(); } /// <summary> /// 得到記錄文件存放路徑 /// </summary> private static void GetPathFile() { //存放於桌面 string folderPath = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); //存放文件的路徑 sPathFile = folderPath + "\\" + DateTime.Now.ToString("MM.dd") + csFileName; } #endregion } } 結果: — — — — — — — — — — — — — — — — a Initialize Start: 01-25 11:37:35 1093 — — — — — — — — — — — — — — — — b messB Start: 01-25 11:37:35 4687 b MessB End: 01-25 11:37:37 2343 b( messB Start—— MessB End) Total:00:00:01.7656250 — — — — — — — — — — — — — — — — b MessC End: 01-25 11:37:38 8906 b( messB Start——MessC End) Total:00:00:03.4218750 — — — — — — — — — — — — — — — — a Initialize End: 01-25 11:37:38 8906 a( Initialize Start——Initialize End) Total:00:00:03.7812500 — — — — — — — — — — — — — — — — |
请发表评论