Starting a new thread, by itself, does not cause the current thread to sleep or freeze. The OS schedules these threads (alongside many other threads) to take turn executing.
If the first application starts the second application as a process, via System.Diagnostics.Process
, this also does not cause the current process or thread to sleep or freeze. The threads that run in these two applications (processes) will also take turn executing.
In other words, if anything ever sleeps or freezes, it is either due to your code, or is due to "blocking I/O" in which some input/output operations were performed in a way that doesn't resume execution until that operation is completed. Blocking I/O will only block the thread on which it is performed.
If an application is given OS administrative privilege, it is possible to issue some special OS command to forcibly freeze another process or thread. This is an advanced topic and is typically not encountered in typical software development.
To get a view of processes and threads, you can try the "SysInternals Process Explorer" utility. However, I must warn you that if you misuse this utility, (e.g. randomly terminating applications or threads) it can cause abnormal software operations, data corruptions, or even make your computer stop working, requiring a repair.