edwardd, there is no other method than executing Cancel Find/Replace in Files to stop Find in Files.
I don't see a problem. I'm using UE v18.104.22.1688 on Windows XP SP3 x86 and UltraEdit cancels the search respectively write to output window within 3 seconds.
I used following options for verification of cancel process:
Find What: body
Search In: Files Listed
In Files/Types: *.html
Directory: root directory of the local copy of a website with in total 1046 HTML files
Match Whole Word Only: not checked
Match Case: checked
Results to Edit Window: not checked
Regular Expressions: UltraEdit: not checked
Display lines that do not match: not checked
Match files if string is not found: not checked
Use Encoding: not checked
Subdirectories to ignore in search: none
File names/extensions to ignore in search: none
Search Subdirectories: checked
Ignore hidden Subdirectories: not checked
Open matching files: not checked
Perhaps the behavior you complain about with stopping Find in Files taking longer to occur happens only under some conditions. Therefore it would be good if you post which parameters you use for the Find in Files which does not cancel within a few seconds.
From what I could see and what makes sense from a programmers point of view is that the thread running the Find in Files checks on the cancel signal from UltraEdit main task only before the thread continues with the search on next file. There is no check on cancel while a search within a file is in progress, most likely because all the find functions are standard subroutines not designed at all for receiving signals as threads. So if you use a Find in Files which finds lots of lines in a very large file with hundred thousands or millions of lines, you have to wait until this file is completely processed and the find function returns, so that main task of the thread can evaluate the cancel signal and terminate.