Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
            }
        }