private void SetRenderImageState() { if (this.renderImageState == renderResource.State) { return; } RenderImageState oldRenderImageState = this.renderImageState; this.renderImageState = renderResource.State; if (oldRenderImageState != RenderImageState.Idle && oldRenderImageState != RenderImageState.DownloadProgress || renderImageState == RenderImageState.Idle) { throw new Granular.Exception("Can't change BitmapSource.RenderImageState from \"{0}\" to \"{1}\"", oldRenderImageState, renderImageState); } switch (renderImageState) { case RenderImageState.DownloadProgress: IsDownloading = true; DownloadProgress.Raise(this); break; case RenderImageState.DownloadCompleted: IsDownloading = false; DownloadCompleted.Raise(this); break; case RenderImageState.DownloadFailed: IsDownloading = false; DownloadFailed.Raise(this); break; default: throw new Granular.Exception("Unexpected DownloadState \"{0}\"", renderImageState); } }