В конце концов, я использовал решение, основанное на предложении Ганса.Сначала я загрузил gif в Image с помощью метода FromStream из файла.Затем я загрузил MemoryStream с Image и преобразовал его в байтовый массив.Теперь я могу закрыть оба потока.После этого я использовал TypeConverter для восстановления изображения из байтового массива.Я знаю, это не очень элегантно, но работает.
Image imgTemp = Image.FromStream(ms);
imgTemp.Save(byteStream, imgTemp.RawFormat);
byte[] temparray = byteStream.ToArray();
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Image));
Image newImage = (Image)tc.ConvertFrom(temparray);
this.m_Image.Image = null;
this.m_Image.Image = newImage;