The simplest solution is disabling drawing when the list is updated.
m_ListCtrl.SetRedraw(0);
m_ListCtrl.SetRedraw(1);
m_ListCtrl.Invalidate();
m_ListCtrl.UpdateWindow();
If possible you should only change portions of the list instead of replacing the complete content. Also there is often no need to remove the columns when those will not change.
[EDIT]
You may also set the
LVS_EX_DOUBLEBUFFER
Extended List-View Styles (Windows)[
^] to reduce flickering.
[/EDIT]