Ho questo codice, che premendo il button carica una gridview.
Vorrei che nell' attesa del caricamento venga visualizzata una figura.gif.
In teoria mi funziona, ma solo una volta.
La cosa strana � che se faccio la simulazione con un Thread, funziona sempre, ma quando lancio la routine Getdati, che mi tira su i dari, mi funziona una volta sola.

codice HTML:
  <%@PageLanguage="vb"AutoEventWireup="false"CodeBehind="WebForm3.aspx.vb"Inherits="Web_Test_Spinner_Lorenzo.WebForm3"%>
   
  <!DOCTYPEhtml>
   
  <htmlxmlns="http://www.w3.org/1999/xhtml">
  <headrunat="server">
  <metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
  <title></title>
  </head>
  <body>
  <formid="form1"runat="server">
  <div>
  <asp:ScriptManagerID="ScriptManager1"runat="server"></asp:ScriptManager>
   
  <asp:UpdateProgressID="UpdateProgress"runat="server"AssociatedUpdatePanelID="UpdatePanel1">

  <ProgressTemplate>
                  Searching....
  <divid="progresso"class="progress">
  <imgsrc="Resources\waiting2.gif"/>&nbsp;please wait...
  </div>
  </ProgressTemplate>
  </asp:UpdateProgress>
   
   
  <asp:UpdatePanelID="UpdatePanel1"runat="server"UpdateMode="Conditional">
  <ContentTemplate>
  <fieldset>
  <legend>UpdatePanel1</legend>
  <asp:LabelID="Label1"runat="server"Text="Panel initially rendered."></asp:Label>
  <br/>
  <asp:DropDownListID="DropDownList1"runat="server"AutoPostBack="True"
  OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
  <asp:ListItemValue="1">Choose</asp:ListItem>
  <asp:ListItemValue="2">Blue</asp:ListItem>
  <asp:ListItemValue="3">Green</asp:ListItem>
  </asp:DropDownList>
  <br/>
  <asp:ButtonID="Button1"runat="server"Text="Button"OnClick="Button1_Click"/>
   
  </fieldset>
  <asp:GridViewID="GridView2"runat="server"AllowPaging="false"></asp:GridView>
  </ContentTemplate>
  <Triggers>
  <asp:AsyncPostBackTriggerControlID="DropDownList1"EventName="SelectedIndexChanged"/>
  <asp:AsyncPostBackTriggerControlID="Button1"EventName="Click"/>
   
  </Triggers>
  </asp:UpdatePanel>
   
   
  </div>
  </form>
  </body>
  </html>
codice behind:

codice:
  ImportsSystem.Configuration
  ImportsSystem.Data
  ImportsSystem.Data.SqlClient
  ImportsSystem.Threading
  PublicClassWebForm3
  InheritsSystem.Web.UI.Page
  
  ProtectedSubPage_Load(ByVal sender AsObject, ByVal e AsSystem.EventArgs) HandlesMe.Load
  
  IfNotIsPostBackThen
  
  Else
  
  EndIf
  EndSub
  
  ProtectedSub Button1_Click(ByVal sender AsObject, ByVal e AsEventArgs)
  System.Threading.Thread.Sleep(3000)
          Label1.Text = "Page refreshed at "&DateTime.Now.ToString()
  'getdata()  FUNZIONA SOLO UNA VOLTA

  EndSub
  
  ProtectedSub DropDownList1_SelectedIndexChanged(ByVal sender AsObject, ByVal e AsEventArgs)
  System.Threading.Thread.Sleep(3000)
          Label1.Text = "Page refreshed with DDL at "&DateTime.Now.ToString()
  EndSub
  
  PublicSubgetdata()
  Dimconnx = ConfigurationManager.ConnectionStrings("Connessione_Mia").ConnectionString
  DimstrSQLAsString = "SELECT  top 10000 * FROM tbl_Mia_Tabella "
  Using conn AsNewSqlConnection(connx)
  Try
  UsingcmdSQLAsSqlCommand = NewSqlCommand(strSQL, conn)
  conn.Open()
  DimrstDataAsDataTable = NewDataTable()
  rstData.Load(cmdSQL.ExecuteReader())
                      GridView2.DataSource = rstData
                      GridView2.DataBind()
  EndUsing
  
  CatchessAs Exception
  MsgBox(ess.Message)
  EndTry
  EndUsing
  EndSub
  EndClass