我有一個C#winforms應用程序,該應用程序與各種com數據源進行通信,並在其大部分後端處理中使用線程池。我注意到,每天2-3次winforms線程掛起20-30秒(在ui中可見,並且com數據停止20-30秒)。因爲我已經寫在跟蹤上的WinForms線程心跳檢測這些情況下,線程池一個簡單的任務,但我在尋找一種方式來自動觸發一個完全轉儲(不是一個小型轉儲),這樣我就可以看到究竟是什麼winforms線程在這些暫停期間正在執行。調試Windows窗體線程凍結
是否有任何簡單的命令行應用程序,我的後臺線程可以在它自己的過程叫綁定到應用程序的調試程序,生成完整的轉儲文件,然後允許應用程序恢復?
有沒有更好的方法來調試呢?
像這樣的延遲可能是由完整的垃圾收集引起的。啓用gcServer或應用程序耗盡併發/後臺GC跟上的能力。線程將被阻塞,包括您的看門狗線程,除非您設法使其不分配任何GC內存。 – 2011-04-16 15:09:38