There is no magic feature in IMAP protocol that will synchronize changes made on IMAP server to your local database. Some servers report most changes when you use IDLE, however some don't. Please also have in mind that while you are offline/not connected changes may happen.
Use GetAll method, remember to check FolderStatus.UIDValidity.
Generally speaking Imap.GetAll is rather fast, so you shouldn't have much problems with that.