{"record":{"id":"ce45acb73ed5002e","repo":"dotnet/wpf","slug":"sr-enum-invalid-timeseekorigin","errorCode":null,"errorMessage":"SR.Enum_Invalid (TimeSeekOrigin)","messagePattern":"SR\\.Enum_Invalid \\(TimeSeekOrigin\\)","errorType":"exception","errorClass":"InvalidEnumArgumentException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/TimeManager.cs","lineNumber":257,"sourceCode":"        /// from the end position has no effect.</p>\n        /// </remarks>\n        public void Seek(int offset, TimeSeekOrigin origin)\n        {\n            if (_timeState >= TimeState.Paused)\n            {\n                switch (origin)\n                {\n                    case TimeSeekOrigin.BeginTime:\n                        // Use the offset as the new time;\n                        break;\n\n                    case TimeSeekOrigin.Duration:\n                        // Undefined for the global clock\n                        return;\n\n                    default:\n                        // Invalid enum argument\n                        throw new InvalidEnumArgumentException(SR.Format(SR.Enum_Invalid, \"TimeSeekOrigin\"));\n                }\n\n                // Truncate to the beginning\n                if (offset < 0)\n                {\n                    offset = 0;\n                }\n\n                TimeSpan offsetTime = TimeSpan.FromMilliseconds((double)offset);\n\n                // Only do the work if we actually moved\n                if (offsetTime != _globalTime)\n                {\n                    // Set the new global time\n                    _globalTime = offsetTime;\n\n                    // Adjust the starting time for future ticks\n                    _startTime =_systemClock.CurrentTime - _globalTime;","sourceCodeStart":239,"sourceCodeEnd":275,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/TimeManager.cs#L239-L275","documentation":"MediaClock.Seek validates the timeSeekOrigin enum argument; only TimeSeekOrigin.BeginTime and TimeSeekOrigin.Duration are defined. Any other cast/garbage value reaches the default case and throws InvalidEnumArgumentException with SR.Enum_Invalid(\"TimeSeekOrigin\").","triggerScenarios":"Calling clock.Seek(offset, TimeSeekOrigin.Duration) is handled, but clock.Seek(offset, (TimeSeekOrigin)99) or an uninitialized enum variable (default value 0, which is not a defined member) throws.","commonSituations":"Persisting the origin as an int in settings and casting back without validation; interop/COM callers passing a bad integer; a default(TimeSeekOrigin) of 0 passed straight through.","solutions":["Pass only TimeSeekOrigin.BeginTime or TimeSeekOrigin.Duration.","Validate with Enum.IsDefined(typeof(TimeSeekOrigin), value) before casting from int.","Default unknown values to TimeSeekOrigin.BeginTime."],"exampleFix":"// before\nclock.Seek(offset, (TimeSeekOrigin)savedOrigin);\n// after\nvar origin = Enum.IsDefined(typeof(TimeSeekOrigin), savedOrigin) ? (TimeSeekOrigin)savedOrigin : TimeSeekOrigin.BeginTime;\nclock.Seek(offset, origin);","handlingStrategy":"validation","validationCode":"if (!Enum.IsDefined(typeof(TimeSeekOrigin), origin)) origin = TimeSeekOrigin.BeginTime;\nclock.Seek(offset, origin);","typeGuard":"static bool IsDefinedTimeSeekOrigin(int v) => Enum.IsDefined(typeof(TimeSeekOrigin), v);\nstatic TimeSeekOrigin SafeOrigin(int v) => Enum.IsDefined(typeof(TimeSeekOrigin), v) ? (TimeSeekOrigin)v : TimeSeekOrigin.BeginTime;","tryCatchPattern":"try { clock.Seek(offset, origin); }\ncatch (InvalidEnumArgumentException ex) { /* log and retry with BeginTime */ clock.Seek(offset, TimeSeekOrigin.BeginTime); }","preventionTips":["Only pass TimeSeekOrigin.BeginTime or TimeSeekOrigin.Duration literals.","Validate persisted int enum values with Enum.IsDefined before casting.","Avoid default(TimeSeekOrigin) — its 0 value is not a defined member."],"tags":["wpf","animation","enum","invalid-argument"],"backgroundTag":"invalid-enum-value","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-21T21:30:21.729Z"}