SOLVED GeUserarea crash when Redraw() in Message()

hi,
i write a GUI and use mouse left to refresh GeUserarea , mouse right stop refresh. Unfortunately, when click mouser left, it crash. Somebody can tell me what I did wrong ? this is my code.
Hope your help!

import c4d
from c4d import gui

class MyArea(gui.GeUserArea):
    def __init__(self) :
        self.leftclick = False

    def GetMinSize(self) :
        return (600, 500)

    def DrawMsg(self,x1, y1, x2, y2, msg):
        self.DrawSetPen(  c4d.Vector(.21) )
        self.DrawRectangle(x1, y1, x2, y2)

    def Message(self, msg, result):
        if msg.GetId():
            if self.leftclick:
                self.Redraw()
        return c4d.gui.GeUserArea.Message(self, msg, result)
    
    def InputEvent(self, msg) :
        if msg[c4d.BFM_INPUT_DEVICE] == c4d.BFM_INPUT_MOUSE:
            if msg[c4d.BFM_INPUT_CHANNEL] == c4d.BFM_INPUT_MOUSELEFT:
                self.leftclick = True
            if msg[c4d.BFM_INPUT_CHANNEL] == c4d.BFM_INPUT_MOUSERIGHT:
                self.leftclick = False
        return True

class Dialog(gui.GeDialog):
    def __init__(self, area) :
        self.area = area

    def CreateLayout(self) :
        self.AddUserArea(10010, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT)
        self.AttachUserArea(self.area, 10010)
        return True

def main():
    area = MyArea()
    MyDialog = Dialog(area)

    MyDialog.Open(c4d.DLG_TYPE_MODAL_RESIZEABLE)

if __name__ == "__main__":
    main()

Hi @mike you are simply doing an infinite loop since

    def Message(self, msg, result):
        if msg.GetId():
            if self.leftclick:
                self.Redraw()

Actually redraw the UI, which result to some Message been sent and you ask again to redraw.
One way could be to ask for redraw directly in the InputEvent or simply reset the left click status to False before your redraw call.

Cheers,
Maxime.

Hi @mike you are simply doing an infinite loop since

    def Message(self, msg, result):
        if msg.GetId():
            if self.leftclick:
                self.Redraw()

Actually redraw the UI, which result to some Message been sent and you ask again to redraw.
One way could be to ask for redraw directly in the InputEvent or simply reset the left click status to False before your redraw call.

Cheers,
Maxime.

@m_adam oh,i miss this reason,thank you : )