diff --git a/SabreTools.Serialization/Wrappers/WrapperBaseT.cs b/SabreTools.Serialization/Wrappers/WrapperBaseT.cs index e2f17a12..eca99437 100644 --- a/SabreTools.Serialization/Wrappers/WrapperBaseT.cs +++ b/SabreTools.Serialization/Wrappers/WrapperBaseT.cs @@ -29,6 +29,11 @@ namespace SabreTools.Serialization.Wrappers /// protected DataSource _dataSource = DataSource.UNKNOWN; + /// + /// Lock object for reading from the source + /// + private readonly object _streamDataLock = new(); + /// /// Source byte array data /// @@ -193,11 +198,14 @@ namespace SabreTools.Serialization.Wrappers break; case DataSource.Stream: - long currentLocation = _streamData!.Position; - _streamData.Seek(position, SeekOrigin.Begin); - sectionData = _streamData.ReadBytes(length); - _streamData.Seek(currentLocation, SeekOrigin.Begin); - break; + lock (_streamDataLock) + { + long currentLocation = _streamData!.Position; + _streamData.Seek(position, SeekOrigin.Begin); + sectionData = _streamData.ReadBytes(length); + _streamData.Seek(currentLocation, SeekOrigin.Begin); + break; + } } return sectionData;