IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

C# Timer (jak to działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 21 kwietnia 2026

Klasy Timer w C# to potężne narzędzia do planowania wykonania kodu w określonych odstępach czasu. Niezależnie od tego, czy tworzysz aplikację Windows Form, czy aplikację konsolową, zrozumienie, jak używać timera może znacznie zwiększyć funkcjonalność Twojej aplikacji. Ten samouczek przeprowadzi Cię przez podstawy używania timerów w C#, w tym jak je konfigurować, obsługiwać ich zdarzenia i zapewnić płynne działanie w Twojej aplikacji. Omówimy także, jak używać IronPDF do Automatycznego Generowania PDF w Aplikacjach C# do automatyzacji generacji PDF za pomocą Timera w C#.

Introduction to Timer Classes in C#

C# Timer (Jak to działa dla deweloperów): Rysunek 1 - Klasa Timer

C# oferuje kilka klas timer, z których każda jest dostosowana do różnych zadań i środowisk. Najczęściej używane klasy timer to System.Timers.Timer dla timerów serwerowych i System.Windows.Forms.Timer dla aplikacji Windows Forms. Zrozumienie roli obsługujących zdarzenia jest kluczowe podczas pracy z klasami timer, ponieważ to one decydują o działaniach wykonywanych w każdym znaczącym momencie wyznaczonym przez timer, takim jak tyknięcie lub odstęp czasu zdarzenia.

Konfigurowanie nowego timera

Konfigurowanie interwału czasowego timera jest podstawą jego działania, określając, jak często wywoływane są jego obsługujące zdarzenia, a tym samym kontrolując rytm funkcji aplikacji zależnych od czasu. Aby użyć timera w aplikacji C#, zwłaszcza w przypadku tworzenia aplikacji Windows Forms, zaczynasz od dodania komponentu System.Windows.Forms.Timer z zestawu narzędzi do formularza lub programistycznego tworzenia obiektu timera dla większej elastyczności.

var timer = new System.Timers.Timer(); // Create a new timer
timer.Interval = 2000; // Sets the timer interval to tick every 2 seconds

To proste ustawienie tworzy timer, który tyka co 2 sekundy. Jednak dla timera do wykonywania działań, potrzebujesz połączyć go z obsługującym zdarzenie.

Obsługa zdarzenia Elapsed

Dołączając obsługujący zdarzenie Elapsed do zdarzenia Elapsed System.Timers.Timer, zapewniasz, że Twoja aplikacja może wykonywać zadania w każdym interwale, efektywnie reagując na wyzwałącze czasowe. To zdarzenie jest wywoływane za każdym razem, gdy interwał timera upływa. Dołączasz obsługujący do tego zdarzenia, aby określić, co powinno się stać, gdy timer tyka:

timer.Elapsed += OnTimedEvent;

W powyższym kodzie OnTimedEvent jest metodą, którą definiujesz, a która zostanie wywołana za każdym razem, gdy zdarzenie Elapsed timera zostanie wyzwolone.

Tworzenie obsługującego zdarzenie

Podczas definiowania obsługującego zdarzenie timera, tworzysz metodę, która wykonuje się w odpowiedzi na zdarzenia tyknięć timera, pozwalając na precyzyjną kontrolę działań podejmowanych w określonych odstępach czasowych. Obsługujący zdarzenie dla zdarzenia Elapsed timera zazwyczaj wygląda następująco:

static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
    Console.WriteLine("The Elapsed event was raised at {0:HH:mm:ss.fff}", e.SignalTime);
}

Ta metoda po prostu drukuje aktualny czas na konsoli za każdym razem, gdy timer upłynie, demonstrując, jak odpowiadać na zdarzenie timera.

Uruchamianie i zatrzymywanie timera

Po skonfigurowaniu timera i jego obsługującego zdarzenie, musisz uruchomić timer. Robisz to, ustawiając jego właściwość Enabled na true lub wywołując metodę Start:

timer.Enabled = true; // or timer.Start();

Aby zatrzymać timer, możesz ustawić Enabled na false lub wywołać metodę Stop. To jest kluczowe, aby zapobiec wykonywaniu przez aplikację niepotrzebnych operacji, gdy nie są one potrzebne.

Używanie timerów w aplikacji Windows Forms

System.Windows.Forms.Timer to wartościowy komponent Windows Forms zaprojektowany do bezproblemowej integracji z modelem zdarzeniowym aplikacji Windows Forms, ułatwiający regularne działania bez kompromisu dla responsywności interfejsu użytkownika.

Przykład: Dodawanie timera do formularza

W aplikacji Windows Forms możesz przeciągnąć kontrolkę timera z zestawu narzędzi na swój formularz lub stworzyć ją programistycznie w następujący sposób:

System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
myTimer.Interval = 1000; // 1 second interval
myTimer.Tick += new EventHandler(TimerEventProcessor);
myTimer.Start();

Tutaj TimerEventProcessor jest obsługującym zdarzenie, który będzie wywoływany za każdym razem, gdy zdarzenie Tick wystąpi, co jest podobne do zdarzenia Elapsed w System.Timers.Timer.

Zarządzanie zaawansowanymi timerami

Bezpieczeństwo wątków z timerami

Podczas pracy z timerami niezwykle ważne jest zrozumienie modelu wątków w Twojej aplikacji. Zarówno System.Timers.Timer, jak i System.Threading.Timer wykonują swoje wywołania zwrotne na wątku puli wątków, co pozwala na równoległe wykonywanie. Jednak może to prowadzić do problemów z bezpieczeństwem wątków, jeśli Twoja metoda wywołania zwrotnego modyfikuje współdzielone dane lub wchodzi w interakcje z elementami interfejsu użytkownika. Aby bezpiecznie aktualizować elementy interfejsu użytkownika z wywołania zwrotnego timera, musisz przekierować wywołanie z powrotem do wątku interfejsu użytkownika, używając technik specyficznych dla typu Twojej aplikacji (np. używając Invoke lub BeginInvoke w Windows Forms).

Dokładne odmierzanie czasu

Dla aplikacji wymagających dokładnego odmierzania czasu (np. aplikacje multimedialne lub gry) klasa System.Diagnostics.Stopwatch może być bardziej odpowiednia niż timer do mierzenia upływającego czasu z dużą dokładnością. Chociaż nie jest to sam timer, klasa Stopwatch może być używana w połączeniu z timerem, aby uzyskać precyzyjne pomiary czasu.

Praktyczne przykłady

Przykład: Implementacja timera odliczającego czas

Częstym scenariuszem, w którym timer jest przydatny, jest tworzenie timera odliczającego czas. Można to zrobić, ustawiając interwał timera na jedną sekundę (1000 milisekund) i zmniejszając licznik za każdym razem, gdy timer się kończy. Gdy licznik osiągnie zero, timer się zatrzymuje, sygnalizując koniec odliczania.

using System;

namespace CountdownApp
{
    class Program
    {
        static int countdownTime = 10; // Countdown from 10 seconds

        public static void Main(string[] args) // Main method
        {
            StartCountdown();
            Console.ReadLine(); // Prevent console from closing immediately
        }

        static void StartCountdown()
        {
            var timer = new System.Timers.Timer(1000); // Tick every second
            timer.Elapsed += UpdateCountdown;
            timer.Enabled = true;
        }

        static void UpdateCountdown(Object source, System.Timers.ElapsedEventArgs e)
        {
            if (countdownTime > 0)
            {
                Console.WriteLine(countdownTime-- + " seconds remaining");
            }
            else
            {
                Console.WriteLine("Countdown finished!");
                ((System.Timers.Timer)source).Stop(); // Stop the timer
            }
        }
    }
}

Oto wynik działania powyższego kodu:

C# Timer (Jak to działa dla deweloperów): Rysunek 2 - Wyjście licznika odliczania

Przykład: Planowanie regularnych kontroli bazy danych

Timery mogą być używane do regularnych kontroli w bazie danych, takich jak zapytania o nowe dane lub czyszczenie starych rekordów. Ten przykład konfiguruje timer, aby zapytać bazę danych co godzinę:

private static void SetupDatabaseCheckTimer()
{
    var timer = new System.Timers.Timer(3600000); // Set to 1 hour
    timer.Elapsed += CheckDatabase;
    timer.Enabled = true;
}

private static void CheckDatabase(Object source, System.Timers.ElapsedEventArgs e)
{
    // Perform database operations here
    Console.WriteLine("Database checked at " + e.SignalTime);
}

Wprowadzenie do IronPDF

IronPDF - Łatwe generowanie PDF z HTML i ASPX jest szczególnie ceniony za łatwość użycia w generowaniu PDF z HTML lub adresów URL, umożliwiając w założeniu Twojej aplikacji 'drukowanie' dowolnej zawartości HTML jako dokumentu PDF. To jest niesamowicie przydatne do generowania raportów, faktur lub jakiejkolwiek treści webowej, która musi być przedstawiona w ustandaryzowanym formacie. IronPDF obsługuje także zaawansowane funkcje, takie jak style CSS, JavaScript i niestandardowe czcionki, zapewniając, że wygenerowane PDF-y zachowują wierność treści webowej.

Znaczącą cechą IronPDF jest jego możliwość konwersji HTML do PDF, zachowując układy i style. Generuje PDF-y z treści webowej, co jest idealne do raportów, faktur i dokumentacji. Pliki HTML, adresy URL i ciągi znaków HTML można łatwo konwertować do formatu PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

Instalacja IronPDF

Możesz zainstalować IronPDF za pomocą Menedżera Pakietów NuGet, wykonując to polecenie:

PM > Install-Package IronPdf

Przykład

Wyobraź sobie, że masz wymóg generowania codziennego raportu w formacie PDF, zawierającego dane, które są aktualizowane każdego dnia. Dla prostoty, wygenerujemy podstawowy raport HTML i przekształcimy go do PDF za pomocą IronPDF co 24 godziny. W Twojej aplikacji C#, skonfigurujesz System.Timers.Timer, aby wyzwalał co 24 godziny. Ważne jest, aby zauważyć, że interwał jest ustawiony w milisekundach, więc 24 godziny to 24 * 60 * 60 * 1000 milisekund.

using System;
using System.Timers;
using IronPdf;
using Timer = System.Timers.Timer;

class Program
{
    static void Main(string[] args)
    {
        // Set up the timer for 24 hours
        Timer timer = new Timer(24 * 60 * 60 * 1000);
        timer.Elapsed += OnTimedEvent;
        timer.AutoReset = true;
        timer.Enabled = true;

        Console.WriteLine("Press Enter to exit the program.");
        Console.ReadLine();
    }

    private static void OnTimedEvent(Object source, ElapsedEventArgs e)
    {
        GeneratePdfReport();
    }

    private static void GeneratePdfReport()
    {
        var renderer = new HtmlToPdf();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Daily Report</h1><p>This is the automated daily report.</p>");
        string outputPath = $"f:\\DailyReport_{DateTime.Now:yyyyMMdd}.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"Generated PDF report at {outputPath}");
    }
}

Wynik

Gdy uruchomisz kod, pojawi się następujący wynik w konsoli. Tutaj zmodyfikowałem kod na szybki wynik, więc używam timera 10-sekundowego.

C# Timer (Jak to działa dla deweloperów): Rysunek 3 - Wyjście konsoli

Oto wygenerowany PDF:

C# Timer (Jak to działa dla deweloperów): Rysunek 4 - Raport PDF

Wnioski

Podsumowując, integracja timerów C# z IronPDF prezentuje potężne podejście do automatyzacji generowania i zarządzania dokumentami PDF w aplikacjach .NET. Poprzez dostarczone przykłady, zbadaliśmy, jak skonfigurować timer C#, aby wyzwalać zadania generowania PDF w regularnych odstępach, czy to w celu częstego testowania, czy planowanego generowania raportów.

Używając timerów C#, możemy precyzyjnie kontrolować, kiedy nasze zadania związane z PDF są wykonywane, umożliwiając regularne aktualizacje, generowanie raportów lub jakiekolwiek zadanie, które musi się odbywać zgodnie z harmonogramem. IronPDF ulepsza tę możliwość, zapewniając prosty i efektywny sposób tworzenia, manipulowania i zapisywania dokumentów PDF na podstawie dynamicznej treści, HTML, a nawet stron internetowych.

IronPDF oferuje bezpłatną wersję próbną z informacjami licencyjnymi, z dostępnymi licencjami na pełny dostęp i wsparcie. To zapewnia opłacalny sposób na wdrożenie kompleksowych funkcji PDF w Twoich aplikacjach .NET.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta