There is a fundamental problem here: Bitmap.FromFile holds a lock on the file until the Bitmap object has been disposed. This means the file is in use when you try to write it, and GDI throws an exception.
The easiest way round this is to copy the bitmap into a second Image object, and dispose the original before you try to overwrite the file.
Bitmap varBmp = (Bitmap)Bitmap.FromFile(@"E:\a.jpg");
Bitmap newBitmap = new Bitmap(varBmp);
varBmp.Dispose();
varBmp = null;
newBitmap.Save(@"E:\a.jpg");