/// <summary>ラベルの包含関係を調べる</summary> /// <param name="label">ラベリングデータ</param> /// <param name="token">キャンセルトークン</param> /// <returns>包含関係</returns> public int[][] GetInclusionLink(LabelStructure label, CancellationTokenSource token) { logWriter.Write("ラベルの包含関係を調べます"); if (label == null) { logWriter.WriteError("ラベル情報がありません"); logWriter.WriteError("処理を中止します"); return(null); } label.SetMinMax(); int[][] link = new int[label.Max - label.Min + 1][]; using (PrograssWindow pw = new PrograssWindow("包含検査", label.Max - label.Min + 1)) { Parallel.For(label.Min, label.Max + 1, (n, state) => { if (token.IsCancellationRequested) { state.Break(); } link[n - label.Min] = GetInclusionNumber3(label, n); pw.Add(); }); } logWriter.Write("ラベルの包含関係を調べました"); return(link); }
/// <summary>ラベルの包含関係を調べる</summary> /// <param name="label">ラベリングデータ</param> /// <returns>包含関係</returns> public int[][] GetInclusionLink(LabelStructure label) { logWriter.Write("ラベルの包含関係を調べます"); if (label == null) { logWriter.WriteError("ラベル情報がありません"); logWriter.WriteError("処理を中止します"); return(null); } int[][] link = new int[label.Max - label.Min + 1][]; using (PrograssWindow pw = new PrograssWindow("包含検査", label.Max - label.Min + 1)) { Parallel.For(label.Min, label.Max + 1, (n, state) => { link[n - label.Min] = GetInclusionNumber(label, n); pw.Add(); }); pw.Join(); } logWriter.Write("ラベルの包含関係を調べました"); return(link); }