I extended DynamicLayer for specific needs and raised OnProgress event at the required intervals while progressing, which I believe also updates progress on Map's progress based on custom layer's progress reported, but it doesn't seem to be behaving as intended. For example raising OnProgress(95) from custom dynamic layer doesn't affect Map's progress which has already reported 100 percent and never goes back to less than 100 mark.
Note that the Map's progress is the sum of the individual layer's progress, so if your layer raises progress=50, that doesn't necessarily mean the map has progress=50 (only if it's the only layer that will be the case). So if your layer is only a small fraction of all the layer's progress (some layers has a heigher weight like for instance tiled layers), you could simply be hitting the fact that the progress value is rounded. I suggest you look at the HeatMapLayer sample to see how progress is raised.