Good day @Gen-Hwa Chiang
The physical servers in Azure regions are grouped together in clusters of common physical hardware.
In most cases the desired new VM size is supported on the current hardware cluster hosting the VM. In this case, resizing a VM should not take more than few minutes, since the Azure only need to change the metadata of the VM and allocate the new size. These are only administrative host actions. In these cases the Azure only need to restart the VM if it was running.
Unfortunately this is not always the case! In some cases we must deallocate the VM first and re-allocate it, which can take time. Moreover, if we are using availability set then in some cases all the VMs must be resized together, since they must use the same hardware cluster.
Note! restarting the VM can take long time, depending on the running application which needed to be close/re-open in an ordinarily procedure (for example SQL Server).
So... in general, in most cases it should finish in less than few minutes but it is not a rare that it can take longer.
With that being said, 3 hours sound very long time. It might suggest an issue in the process which require checking the VM host (this cannot be done in the forum but you will need to open a ticket so the Azure team will be able to check it). In addition and more common case which I would check is that maybe during the procedure on the way the OS did some deep update like installing Cumulative Update. Maybe what you are waiting is not related to the re-size of the VM but the installation of update.
What Next
(1) Using the Portal, check what you get when you use the "Boot diagnostics"
(2) In future cases, I recommend always before you change the size of VM: shout down the OS in an ordinarily procedure -> deallocate the VM (can be done in the Portal) -> change the size -> re-start the VM
(3) If the issue continue then you should probably open a ticket from your subscription so the support team will be able to check your VM status.
I HIGHLY recommend to read this post for more information regarding changing the size of VM: https://azure.microsoft.com/en-us/blog/resize-virtual-machines/