Delete and create the layer each time the layer content is reloaded. For example, to dynamically update a PNG layer:
GIS.Lock(); // avoid screen refreshes
zorder = layer.ZOrder ; // store layer z=order position
GIS.Delete( layer.Name ); // delete existing layer
layer = new TGIS_LayerPNG;
layer.Stream = mystream; // you can just read layer from the stream!
// or
// layer.Path = mypath;
layer.Open() ; // it will read all layer properties
layer.SetCSByEPSG( mycs ); // just assign layer.CS to set the layer coordinate system
layer.Extent = myextent; // to set the layer extent expressed in coordinate system units!!!
GIS.Add( layer )
layer.ZOrder = zorder; // restore layer z-order position
GIS.Unlock(); // unlock screen refereshed
This will be just as fast as re-reading the layer.