/// <summary> /// データを指定するコンストラクタ /// </summary> /// <param name="sequence">時系列データ</param> /// <param name="border">ラベル境界情報</param> /// <param name="title">このデータの識別名</param> public SequenceData(TimeSeriesValues sequence, LabelingBorders border, string title) { _lockDisposable = new LockDisposable(_rwLock); this.Values = sequence; this.Borders = border; this.Title = title; this.Type = SequenceType.Numeric; this.IsDataChanged = false; }
private void testToolStripMenuItem_Click(object sender, EventArgs e) { System.Threading.ReaderWriterLockSlim rw = new System.Threading.ReaderWriterLockSlim(System.Threading.LockRecursionPolicy.SupportsRecursion); LockDisposable l = new LockDisposable(rw); int c = 0; const int r = 1000000; StringBuilder s = new StringBuilder(); DateTime p; for (int j = 0; j < 3; j++) { p = DateTime.Now; for (int i = 0; i < r; i++) { c++; } s.AppendLine(((DateTime.Now.Ticks - p.Ticks) / 1000).ToString()); p = DateTime.Now; for (int i = 0; i < r; i++) { lock (rw) { c++; } } s.AppendLine(((DateTime.Now.Ticks - p.Ticks) / 1000).ToString()); p = DateTime.Now; for (int i = 0; i < r; i++) { rw.EnterReadLock(); try { c++; } finally { rw.ExitReadLock(); } } s.AppendLine(((DateTime.Now.Ticks - p.Ticks) / 1000).ToString()); p = DateTime.Now; for (int i = 0; i < r; i++) { using (l.GetReadLock()) { c++; } } s.AppendLine(((DateTime.Now.Ticks - p.Ticks) / 1000).ToString()); } MessageBox.Show(s.ToString()); }
/// <summary> /// 標準のコンストラクタ /// </summary> public LabelingBorders() { _lockDisposable = new LockDisposable(_rwLock); _defaultName = ""; incrementLabelRef(""); }
private TimeSeriesValues() { _lockDisposable = new LockDisposable(_rwLock); }