>>310
現在の実装ではControl.WmPaint()の中で
PaintEventArgsインスタンスを作成して、
その後、OnPaintメソッドに渡してPaintイベント発生という
流れになっているわけだけれど、
Paintイベントから返ってきた後で
PaintEventArgs.Dispose()が呼び出されてる。
よってDispose()を二回呼び出していることになるわけで
それがおそらくエラーの原因。