Porównaj ceny domen i usług IT, sprzedawców z całego świata

System.Threading.Timer przykład uruchomienia i wyświetlenia sekund przed naciśnięciem przycisku


Mam problemy z utworzeniem strony asp.net przy użyciu języka C #
Pierwsze kliknięcie przycisku powoduje wyświetlenie sekund za pomocą kontrolki etykiety.
Po ponownym naciśnięciu przycisku sekundy zatrzymają się.
Obecnie mój kod po prostu drukuje 0 i zatrzymuje się:
System.Threading.Timer Timer;
bool endProcess = false;
int i = 0;protected void Page_Load(object sender, EventArgs e)
{ Timer = new System.Threading.Timer(TimerCallback, null, 10, 10);
Label1.Text = i.ToString();
i++;
}private void TimerCallback(object state)
{ if (endProcess == true)
{
Timer.Dispose();
return;
}
}public void Button1_Click(object sender, System.EventArgs e)
{
endProcess = true;
}

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz ustawić funkcję
label.text = i.toString ();
na
timecallback
, a nie
page_load
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby to działało w ASP.NET, nie wolno używać System.Threading.Timer, ponieważ działa on po stronie serwera i trzeba okresowo aktualizować po stronie klienta. Masz kilka opcji aplikacji WWW.
Pamiętaj, że nie wysyłasz aktualizacji interfejsu użytkownika do przeglądarki internetowej, przeglądarka internetowa musi pobrać lub zażądać aktualizacji. Tak więc naiwnym rozwiązaniem byłoby zmuszenie przeglądarki do okresowego wysyłania postów z powrotem na serwer sieciowy w celu uzyskania zaktualizowanego tekstu etykiety. Nie jest to dobre rozwiązanie, ale podzielam to jako główne założenie koncepcji.
Myślę, że najlepszą opcją byłoby zrobienie tego całkowicie po stronie klienta, używając timera javascript i zaktualizując element DOM o nową wartość. Spójrz na drugi i trzeci przykład na tej stronie

http://www.w3schools.com/ i JS/js_timing.ASA
http://www.w3schools.com/js/js_timing.asp

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się