A couple of notes on the last commit:
I am only threading the reading of the binary file currently, so the editor still hangs on large files when loading the formatted hex data into the view buffer (I am using the replace API command which is the process that takes the longest). I will probably thread this portion as well when I am sure I am accounting properly for all things that could happen when this is handed off to the thread. I may even break up the loading of the data into the view buffer by chunking the data and using the insert API command instead. This might add a little overhead to the loading, but it would allow for a load to be canceled during the buffer load process as well, and also allow for some visual indication of how far along the buffer writing is.
I have throttled the highlighting of selected bytes, mainly because highlighting them requires me to parse each selection and then find it in the ASCII table (time consuming). You will notice that the byte count and displayed addresses in the status bar are tied to the bytes processed and highlighted, so the range of selected bytes and byte count will only represent currently selected bytes. In the next commit, I will probably just display the first address and not display the byte count (until I come up with a quicker way to count the bytes independent of byte highliting) if the byte highlight threshold has been reached.
I am currently not threading writing the binary file and check-summing the binary file (these are very quick compared to loading the binary file, but the time they take to finish is linearly proportional to the size of the file). I may thread these in the future when I finish addressing the loading of the file threading.