Вам потребуется использовать таймер на стороне клиента (или другой метод), чтобы браузер запросил у сервера обновление, например, в этом упрощенном примере:
<asp:UpdatePanel ID="up" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="timer_Ticked" />
<asp:Label ID="Label1" runat="server" Text="1" />
</ContentTemplate>
</asp:UpdatePanel>
Тогда в вашем коде:
protected void timer_Ticked(object sender, EventArgs e)
{
Label1.Text = (int.Parse(Label1.Text) + 1).ToString();
}
Если у вас есть фоновый процесс, который обновляет какое-то состояние, вам нужно будет либо сохранить общее состояние в сеансе, http-кэше или базе данных. Обратите внимание, что срок действия кэша может истекать из-за множества факторов, и фоновые потоки могут быть уничтожены при любой связи, если IIS перезапустит пул приложений.