К сожалению, "идеального" решения не существует. Все, что вы получаете, это повторяющиеся события RESIZE. Пользователь может прекратить изменение размера и возобновить его в любое время, что невозможно предвидеть.
Вероятно, лучшим (но не почти идеальным) решением будет запуск таймера при получении события RESIZE. Когда таймер срабатывает, делайте то, что вам нужно сделать (изменение размера завершено). Когда вы получаете событие RESIZE, когда таймер еще работает, проигнорируйте это событие и перезапустите таймер.