internal void Instrument(Activity activity) { bool isTemporaryFile = false; string sourcePath = null; bool instrumentationFailed = false; Dictionary <string, byte[]> checksumCache = null; try { byte[] checksum; Dictionary <object, SourceLocation> sourceLocations = SourceLocationProvider.GetSourceLocations(activity, out sourcePath, out isTemporaryFile, out checksum); if (checksum != null) { checksumCache = new Dictionary <string, byte[]>(); checksumCache.Add(sourcePath.ToUpperInvariant(), checksum); } Instrument(activity, sourceLocations, Path.GetFileNameWithoutExtension(sourcePath), checksumCache); } catch (Exception ex) { instrumentationFailed = true; Trace.WriteLine(SR.DebugInstrumentationFailed(ex.Message)); if (Fx.IsFatal(ex)) { throw; } } List <Activity> sameSourceActivities = this.instrumentationTracker.GetSameSourceSubRoots(activity); this.instrumentationTracker.MarkInstrumented(activity); foreach (Activity sameSourceActivity in sameSourceActivities) { if (!instrumentationFailed) { MapInstrumentationStates(activity, sameSourceActivity); } // Mark it as instrumentated, even though it fails so it won't be // retried. this.instrumentationTracker.MarkInstrumented(sameSourceActivity); } if (isTemporaryFile) { if (this.temporaryFiles == null) { this.temporaryFiles = new List <string>(); } Fx.Assert(!string.IsNullOrEmpty(sourcePath), "SourcePath cannot be null for temporary file"); this.temporaryFiles.Add(sourcePath); } }
internal void Instrument(Activity activity) { bool isTemporaryFile = false; string sourcePath = null; bool flag2 = false; try { Dictionary <object, SourceLocation> sourceLocations = SourceLocationProvider.GetSourceLocations(activity, out sourcePath, out isTemporaryFile); this.Instrument(activity, sourceLocations, Path.GetFileNameWithoutExtension(sourcePath)); } catch (Exception exception) { flag2 = true; Debugger.Log(1, "Workflow", System.Activities.SR.DebugInstrumentationFailed(exception.Message)); if (Fx.IsFatal(exception)) { throw; } } List <Activity> sameSourceSubRoots = this.instrumentationTracker.GetSameSourceSubRoots(activity); this.instrumentationTracker.MarkInstrumented(activity); foreach (Activity activity2 in sameSourceSubRoots) { if (!flag2) { this.MapInstrumentationStates(activity, activity2); } this.instrumentationTracker.MarkInstrumented(activity2); } if (isTemporaryFile) { if (this.temporaryFiles == null) { this.temporaryFiles = new List <string>(); } this.temporaryFiles.Add(sourcePath); } }