Dispatcher.BeginInvoke
to run an empty probing procedure on the UI thread. If the invoke is completed in a period of time, PC takes the main thread as responsive. Otherwise, PC triggers an emergency save procedure, which will suspend the process, do the save, and resume the process. So a problem exists when main thread is busy, another computation thread is running and they are exchanging data. Under such situation, PC's suspending behavior will unsynchronize these two threads.Dispatcher
and cross-thread invoke is problematic. As a consequence, PC disables the feature on Mac.TableLayoutPanel
in Mono implementation, forms with automatic layout don't display correctly. Therefore, Portability Check uses a fallback presentation form on macos, which contains a textbox only.