Если вы загружаете каждый кадр в ImageList, вы можете использовать цикл для обновления каждого кадра.
Пример:
bool runThrobber = true;
private void AnimateThrobber(TreeNode animatedNode)
{
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(delegate
{
while (runThrobber)
{
this.Invoke((MethodInvoker)delegate
{
animatedNode.SelectedImageIndex++;
if (animatedNode.SelectedImageIndex >= imageList1.Images.Count) > animatedNode.SelectedImageIndex = 0;
});
Thread.Sleep(100);
}
});
bg.RunWorkerAsync();
}
Очевидно, есть несколько способов реализовать это, но вот основная идея.