Die OnClick-Behandlung veranlasst ja noch der Button selbst.
Nach Erledigung kommt der Programmablauf wieder zurück zum Button.
Was dann passiert kannst Du nicht beeinflussen. Vielleicht will Windows den Button jetzt nochmal zeichnen o.ä. - und plötzlich ist er weg
Also der bisherige Speicherbereich ist undefiniert.
Ein Workaround wäre, den Button unsichtbar zu machen und irgendwo zu merken (in einer Liste oder globalen Variable o.ä.).
Dann kannst Du etwas später, wenn mal Zeit ist (und Windows garantiert nicht mehr benutzt), diesen freigeben.
Also so etwas wie einen Papierkorb bauen, der immer mal geleert wird.
Sonst wäre auch möglich, eine Message an den Button zu senden, der ihn veranlasst, sich freizugeben.
Dazu gab es schon Beiträge in der
DP.