Ho un esempietto piuttosto datato.
Nella pagina ho un pulsante che fa il submit. L'operazione è lunga. Durante l'elaborazione viene disabilitato il pulsante e compare una scritta del tipo: "prego attendere... elaborazione in corso"

codice:
    <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button"></asp:Button>
        </div>
        <div id="div2"></div>
    </form>
codice:
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Inserire qui il codice utente necessario per inizializzare la pagina
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim inizio As DateTime = DateTime.Now
        Do While (Now().Subtract(inizio).TotalSeconds <= 5)
        Loop

    End Sub

    Private Sub Button1_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Init
        Dim btn As Button = DirectCast(sender, Button)
        btn.Attributes.Add("onclick", "v=this;window.setTimeout(function(){v.disabled=true;document.getElementById('div2').innerHTML = 'Operazione in corso, prego attendere...';}, 1);")

    End Sub
L'esempio è scarno ma funziona. Al posto della scritta si può usare una gif animata.

Può essere pure interessante la tecnica che consiste nel velare di grigio la pagina durante il submit in modo da disabilitare tutto e presentare al centro un rettangolo con la gif animata o la scritta "prego attendere"