Prevent the application from freezing
If the extension executes a process that takes a long time, the application may appear to freeze. The following code allows you to draw the UI while the extension is running.
using System.Windows.Threading;
///<summary>
///DoEvents
///</summary>
void DoEvents()
{
    var frame = new DispatcherFrame();
    var callback = new DispatcherOperationCallback(obj =>
    {
        ((DispatcherFrame)obj).Continue = false;
        return null;
    });
    Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, callback, frame);
    Dispatcher.PushFrame(frame);
}
void SomeCommand(ICommandContext c, ICommandParams p)
{
    for (var i = 0; i < 100; i++)
    {
        //Do some processing
        ...
//Update the application screen
DoEvents();
    }
}
Caution
Instead of blocking the user interface, it is possible to operate the screen, which may result in unexpected behavior, so please use with caution.