InvokeRequired checks if the current thread is different from the UI thread.
Invoke executes synchronously on the UI thread, while BeginInvoke executes asynchronously.
Always wrap UI updates inside Invoke when coming from background threads (like Task.Run, Thread, or BackgroundWorker).
No new thread creation by await:
The await keyword itself does not create a new thread. The task that is awaited might be executed on another thread, but that's determined by the task itself, not by the await keyword.
No, the await keyword in C# does not inherently create a new thread. Instead, async and await enable asynchronous operations that allow a method to yield control back to the caller while waiting for a task to complete, without blocking the current thread. The awaited task may or may not be executed on a separate thread, but await itself doesn't dictate that.