1 回答

TA貢獻1856條經(jīng)驗 獲得超5個贊
好像失敗的 DrawImage 導致了一些錯誤狀態(tài)
是的,這正是它的作用。Paint 事件處理程序中的異常非常尷尬,它使繼續(xù)調(diào)試程序變得困難。如果什么都不做,當你繼續(xù)調(diào)試時,這樣的異常會一遍又一遍地引發(fā),使得診斷程序中的另一個異常變得非常困難。這種擔憂已經(jīng)過時,可以追溯到 Aero 尚不存在的 Win2000/XP 時代。
執(zhí)行此操作的方法是調(diào)用 OnPaint() 的方法,它是一個名為Control.PaintWithErrorHandling()的內(nèi)部方法??匆豢矗_假設的錯誤狀態(tài)名為 STATE_EXCEPTIONWHILEPAINTING。當它被設置一次時,它總是回退到 PaintException(),它繪制了失敗的紅十字。從而避免再次引發(fā)異常的風險。我將復制/粘貼評論:
// Exceptions during painting are nasty, because paint events happen so often.
// So if user painting code ----s up, we make sure never to call it again,
// so as not to spam the end-user with exception dialogs.
破折號用于拼寫 f-word,在開源之前清理源代碼花了很長時間,并在他們嘗試自動化時造成了相當大的損害:)
- 1 回答
- 0 關注
- 277 瀏覽
添加回答
舉報