InvokeIfRequired() is a terrible, terrible practice. It is but a bandaid over a profusely gushing wound. It is
always required, if it is not then there's something horribly wrong. All that it does is hide a very important detail, one that too few programmers understand so like to hide. You get what you want by using BeginInvoke() instead of Invoke(). But it won't make a whit of difference, the UI thread is still burning 100% core. Use a profiler if you have no idea why. —
Hans Passant 57 secs ago