It would be dangerous to call Abort on the thread method that occurs in the delegate called with Delegate.BeginInvoke.
Delegate.BeginInvoke launches a delegate in the ThreadPool thread. Terminating a ThreadPool thread through Abort can lead to very strange errors, since ThreadPool is not designed to handle this.
This, as they say, is also completely unnecessary. You should always be able to detect from the ThreadPool thread whether you want to abort and simply return accordingly. If a ThreadPool thread is blocked, this will not be a problem either, since it does not block your main thread. It would be better to just check after your blocking call (i.e., immediately after File.Exists ) and just return if you want to refuse at this time.
source share