01 private void ChangeImage() {
02     Image image = new Image();
03  
04     new Thread(new ThreadStart(() => {
05         BitmapImage bitmap = new BitmapImage();
06         bitmap.BeginInit();
07         bitmap.UriSource = new Uri(images[index++ % images.Count]);
08         bitmap.CacheOption = BitmapCacheOption.OnLoad;
09         bitmap.EndInit();
10         bitmap.Freeze();
11  
12         Dispatcher.BeginInvoke((Action)(() => {
13             image.Source = bitmap;
14             image.Stretch = Stretch.UniformToFill;
15             TransitionBox.Content = image;
16         }));
17  
18     })).Start();
19 }