Under no circumstances should you do any of this. A property should always be fast and logically represent a property of something. Ideally it should never fail. It certainly should not produce side effects such as popping up UI. You're violating all of these important guidelines. Don't do it.
Furthermore, your UI design is bad. Don't ask a user beforehand "this might take a while, are you sure?" and then punish them with a long wait if they click yes. Instead, start the operation, and if it doesn't return quickly, pop up a UI element that shows a progress bar and an estimated time left that has a cancel button.
You should probably write your long-running operation as an asynchronous method that can be cleanly cancelled on another thread.
A good architecture for this sort of thing is to have your method return immediately an object that exposes events like "I'm still running and here's how far along I am", or "I'm done now and here's the result", or "I got an error while attempting to do the operation and here's what it is". That object can also expose a "cancel" method that knows how to communicate with the worker thread and shut it down cleanly. The caller of the method that gets this object can then decide how to display the UI to the user.
With this architecture you separate your UI logic, your asynchrony logic and your business process logic from each other cleanly. This is work, but it pays dividends later.