Использование Storyboard
отличается от использования стандартного System.Threading.Timer
. Storybroad
работает в основном потоке, следовательно, Completed
даже может манипулировать элементами пользовательского интерфейса, не получая исключений между потоками. Стандартный обратный вызов Timer
не выполняется в потоке пользовательского интерфейса, и поэтому ему потребуется дополнительная помощь для управления элементами пользовательского интерфейса.
Однако, как отмечает Марк, если все, что действительно необходимо, это задержка, то DispatcherTimer
будет более интуитивным выбором. Разница с DispatcherTimer
заключается в том, что он предназначен для регулярного вызова события Tick
, тогда как Storyboard
будет вызывать Completed
не более одного раза для каждого вызова Begin
. DispatcherTimer
можно использовать таким образом, вызывая его метод Stop
в первом событии Tick
.