گذشته از شوخی؛ پس بنظر شما کد بالا عملاً مشکلی نداره؟ حالا Performance اش بماند، این کد Thread-safeهست دیگه ان شا... ؟
من از جزئیاتش اطلاعی ندارم، Visual Studio هم الان ندارم که بخوام تست کنم، ولی منطق کار درست هست، و کدهای مربوط به تغییر UI از سایر کدها جدا شدند، و توسط Threadهای مالک اون اشیاء ویژوال تغییر می کنند.

راستش یکمی ناجور بنظر میرسه که داخل خود تابعی که قرار هست Asynchron فراخوانی بشه، یه CallBack تنظیم (Set) کنیم! اونهم با این سینتکس عجیب که new object رو Invoke میکنه و ...
خب دیگه، هر زبانی شکل و شمایل خودش رو داره.