public void ReleaseMarker(TimeRulerMarker marker) { if (marker == null) { throw new ArgumentNullException("marker"); } // 登録を解除。 markers.Remove(marker.Id); }
public TimeRulerMarker CreateMarker() { int id = ++markerIdCounter; // マーカを登録。 var marker = new TimeRulerMarker(this, id); markers[id] = marker; return(marker); }
/// <summary> /// 指定されたマーカに対する計測を終了させます。 /// </summary> /// <param name="marker">計測を終了させるマーカ。</param> internal void End(TimeRulerMarker marker) { // currentFrameLog の同期をとるために自身をロック。 lock (this) { // 対象のバーを取得。 var bar = currentFrameLog.Bars[marker.BarIndex]; // 呼び出しスタックから POP して MarkerLog のインデックスを取得。 var markerLogIndex = bar.MarkerLogIndexStack[--bar.MarkerLogIndexStackCount]; // インデックスの示す MarkerLog と ID が一致しないならば不正な順序での呼び出し。 if (bar.MarkerLogs[markerLogIndex].Id != marker.Id) { throw new InvalidOperationException("Invalid Begin/End call sequence."); } // 終了時間を記録。 bar.MarkerLogs[markerLogIndex].EndTime = (float)stopwatch.Elapsed.TotalMilliseconds; } }
/// <summary> /// 指定されたマーカに対する計測を開始させます。 /// </summary> /// <param name="marker">計測を開始させるマーカ。</param> internal void Begin(TimeRulerMarker marker) { // currentFrameLog の同期をとるために自身をロック。 lock (this) { // 対象のバーを取得。 var bar = currentFrameLog.Bars[marker.BarIndex]; // MarkerLog を追加。 bar.MarkerLogs[bar.MarkerLogCount].Id = marker.Id; bar.MarkerLogs[bar.MarkerLogCount].BeginTime = (float)stopwatch.Elapsed.TotalMilliseconds; bar.MarkerLogs[bar.MarkerLogCount].EndTime = float.NaN; bar.MarkerLogs[bar.MarkerLogCount].Color = marker.Color; // MarkerLog のインデックスを呼び出しスタックに追加。 bar.MarkerLogIndexStack[bar.MarkerLogIndexStackCount++] = bar.MarkerLogCount; // MarkerLog 数を増やす。 bar.MarkerLogCount++; } }
/// <summary> /// 指定されたマーカに対する計測を終了させます。 /// </summary> /// <param name="marker">計測を終了させるマーカ。</param> internal void End(TimeRulerMarker marker) { // currentFrameLog の同期をとるために自身をロック。 lock (this) { // 対象のバーを取得。 var bar = currentFrameLog.Bars[marker.BarIndex]; // 呼び出しスタックから POP して MarkerLog のインデックスを取得。 var markerLogIndex = bar.MarkerLogIndexStack[--bar.MarkerLogIndexStackCount]; // インデックスの示す MarkerLog と ID が一致しないならば不正な順序での呼び出し。 if (bar.MarkerLogs[markerLogIndex].Id != marker.Id) throw new InvalidOperationException("Invalid Begin/End call sequence."); // 終了時間を記録。 bar.MarkerLogs[markerLogIndex].EndTime = (float) stopwatch.Elapsed.TotalMilliseconds; } }
/// <summary> /// 指定されたマーカに対する計測を開始させます。 /// </summary> /// <param name="marker">計測を開始させるマーカ。</param> internal void Begin(TimeRulerMarker marker) { // currentFrameLog の同期をとるために自身をロック。 lock (this) { // 対象のバーを取得。 var bar = currentFrameLog.Bars[marker.BarIndex]; // MarkerLog を追加。 bar.MarkerLogs[bar.MarkerLogCount].Id = marker.Id; bar.MarkerLogs[bar.MarkerLogCount].BeginTime = (float) stopwatch.Elapsed.TotalMilliseconds; bar.MarkerLogs[bar.MarkerLogCount].EndTime = float.NaN; bar.MarkerLogs[bar.MarkerLogCount].Color = marker.Color; // MarkerLog のインデックスを呼び出しスタックに追加。 bar.MarkerLogIndexStack[bar.MarkerLogIndexStackCount++] = bar.MarkerLogCount; // MarkerLog 数を増やす。 bar.MarkerLogCount++; } }
public void ReleaseMarker(TimeRulerMarker marker) { if (marker == null) throw new ArgumentNullException("marker"); // 登録を解除。 markers.Remove(marker.Id); }
public TimeRulerMarker CreateMarker() { int id = ++markerIdCounter; // マーカを登録。 var marker = new TimeRulerMarker(this, id); markers[id] = marker; return marker; }