protected override void DoRun() { this._weights = new float[this._sources.Length][]; for (int index1 = 0; index1 < this._sources.Length; ++index1) { RouterPoint source = this._sources[index1]; this._weights[index1] = new float[this._targets.Length]; for (int index2 = 0; index2 < this._targets.Length; ++index2) { RouterPoint target = this._targets[index2]; this._weights[index1][index2] = float.MaxValue; if ((int)target.EdgeId == (int)source.EdgeId) { Path path = source.PathTo(this._routerDb, this._getFactor, target); if (path != null) { this._weights[index1][index2] = path.Weight; } } } } int num1; for (int i = 0; i < this._sources.Length; i = num1 + 1) { Dykstra dykstra = new Dykstra(this._graph, (IEnumerable <Path>) this._sources[i].ToPaths(this._routerDb, this._getFactor, true), false); dykstra.WasFound = dykstra.WasFound + (Func <uint, float, bool>)((vertex, weight) => this.ForwardVertexFound(i, vertex, weight)); dykstra.Run(); num1 = i; } int num2; for (int i = 0; i < this._targets.Length; i = num2 + 1) { Dykstra dykstra = new Dykstra(this._graph, (IEnumerable <Path>) this._targets[i].ToPaths(this._routerDb, this._getFactor, false), true); dykstra.WasFound = dykstra.WasFound + (Func <uint, float, bool>)((vertex, weight) => this.BackwardVertexFound(i, vertex, weight)); dykstra.Run(); num2 = i; } this.HasSucceeded = true; }