Download and run Process Explorer.
https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer
Find one of your processes and select it. In the lower half of the window select Threads. Look at their state and CPU cycles. You can double click on a thread to look at it's call stack. Here I put Powershell in a computation loop.
If you wrote the code in C# or VB.Net, double click on the program and view the .Net performance. You may have a memory leak.
Compare the one that is running vs the one that is hung. Or restart one of them and monitor over time as it executes.