I am a senior software engineer in the .NET development environments as well.
ItsGood posited some very good thoughts regarding the use of asynchronous co-routines. A casual review of co-routine information does show definite promise in this recommendation.
However, when faced with such a situation I have simply used multiple threads to handle the main process as well as one that would update the main process as a result of its own task responsibilities. From what I have read, co-routines are an alternative to primary threading that may fit your requirements. However, if they don't for whatever reason than simply use standard threading, which should definitely work in your situation.
Here are tw links to help you get going with co-routines...
NuGet Concurrency Helper Library
As to the spinning image, another alternative would be to simply use a GIF file that is already designed to animate in the manner you would like. This way it can run on the main thread without you having to worry about any updates to it.