If I want to do a \"fire and forget\" of some code, but still want to ensure that my memory is cleaned up (per Why does asynchronous delegate method require calling EndInvoke?),
Nowdays it could be done like
BeginInvoke((Action)(async () => { // Show child form var f = new MyForm(); f.ShowDialog(); // Update parent/current await UpdateData(); }));