IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

C# Zamanlayıcı (Geliştiriciler için Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

C#'ta Zamanlayıcı sınıfları, belirli aralıklarla kod yürütmesini planlamak için güçlü araçlardır. Bir Windows Form uygulaması veya bir Konsol Uygulaması geliştirirken, bir zamanlayıcı nasıl kullanılacağını anlamak, uygulamanızın işlevselliğini büyük ölçüde artırabilir. Bu eğitim, C#'ta zamanlayıcıların nasıl kullanılacağının temellerine adım adım rehberlik edecek ve bunların nasıl ayarlandığını, olaylarının nasıl işlendiğini ve uygulamanızda sorunsuz çalışmasını nasıl sağlayacağınızı anlatacak. Ayrıca, C# Uygulamalarında Zamanlayıcı kullanarak PDF oluşturma sürecimizi otomatikleştirmek için IronPDF'yi nasıl kullanacağımızı tartışacağız.

Introduction to Timer Classes in C#

C# Zamanlayıcı (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Zamanlayıcı Sınıfı

C#, her biri farklı görevler ve ortamlara uygun çeşitli zamanlayıcı sınıfları sunar. En yaygın kullanılan zamanlayıcı sınıfları, sunucu tabanlı zamanlayıcılar için System.Timers.Timer ve Windows Forms uygulamaları için System.Windows.Forms.Timer dır. Zamanlayıcı sınıflarıyla çalışırken olay işleyicilerin rolünü anlamak önemlidir, çünkü bu işleyiciler, zamanlayıcının dikte ettiği önemli anlarda (tik veya geçmiş olay aralıkları gibi) gerçekleştirilen eylemleri belirler.

Yeni Bir Zamanlayıcı Ayarlama

Zamanlayıcınızın zaman aralığını yapılandırmak, temel işlevselliği sağlamada önemlidir, çünkü bu, zamanlayıcının olay işleyicilerinin ne sıklıkla çağrıldığını belirler ve böylece uygulamanın zaman hassasiyetli işlevlerinin ritmini kontrol eder. Özellikle Windows Forms uygulamaları geliştirirken, C# uygulamanızda bir zamanlayıcı kullanmak için, formunuza araç kutusundan System.Windows.Forms.Timer bileşenini ekleyerek veya daha fazla esneklik için programlı olarak bir zamanlayıcı nesnesi oluşturarak başlanır.

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

Bu basit kurulum, her 2 saniyede bir tik atan bir zamanlayıcı oluşturur. Ancak, zamanlayıcının eylemler gerçekleştirebilmesi için, onu bir olay işleyiciye bağlamanız gerekir.

Geçmiş Olayı İşleme

Bir System.Timers.Timer'ın Elapsed olayına bir geçmiş olay işleyici ekleyerek, uygulamanızın her aralıkta görevleri yerine getirebilmesini sağlayarak zaman temelli tetikleyicilere etkili bir şekilde yanıt vermesini sağlarsınız. Bu olay, zamanlayıcının aralığı her geçtiğinde tetiklenir. Zamanlayıcının tik attığında ne olacağını belirtmek için bu olaya bir işleyici eklersiniz:

timer.Elapsed += OnTimedEvent;

Yukarıdaki kodda, OnTimedEvent, zamanlayıcının Elapsed olayı tetiklendiğinde çağrılacak bir yöntemdir.

Olay İşleyici Oluşturma

Bir zamanlayıcı olay işleyicisini tanımlarken, timer'ın tik olaylarına yanıt olarak yürütülen bir yöntem tasarlarsınız ve bu, belirli aralıklarda alınan eylemleri hassas bir şekilde kontrol etmenize olanak tanır. Bir zamanlayıcının Elapsed olayına yönelik bir olay işleyicisi tipik olarak şu şekilde görünür:

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

Bu yöntem, zamanlayıcı her sona erdiğinde geçerli saati konsola basitçe yazdırır ve zamanlayıcı olayına nasıl yanıt verileceğini gösterir.

Zamanlayıcıyı Başlatma ve Durdurma

Zamanlayıcıyı ve onun olay işleyicisini kurduktan sonra, zamanlayıcıyı başlatmanız gerekir. Bunu, Enabled özelliğini true olarak ayarlayarak veya Start yöntemini çağırarak yaparsınız:

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

Zamanlayıcıyı durdurmak için Enabledfalse ayarlayabilir veya Stop yöntemini çağırabilirsiniz. Bu, uygulamanızın gerektiğinde gereksiz eylemleri çalıştırmasını önlemek için önemlidir.

Windows Forms Uygulamasında Zamanlayıcı Kullanma

System.Windows.Forms.Timer, Windows Forms uygulamalarının olaya dayalı modeliyle sorunsuz bir şekilde bütünleşmesi için tasarlanmış değerli bir Windows forms bileşenidir ve kullanıcı arabiriminin yanıt verebilirliğini etkilemeden düzenli işlemler sağlar.

Örnek: Bir Forma Zamanlayıcı Ekleme

Windows Forms uygulamasında, bir zamanlayıcı kontrolünü formunuza sürükleyebilir veya şu şekilde programlı olarak oluşturabilirsiniz:

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

Burada, TimerEventProcessor, Tick olayı meydana geldiğinde her çağrılacak olan bir olay işleyicidir ve bu, System.Timers.Timer'daki Elapsed olayına benzer.

Gelişmiş Zamanlayıcı Yönetimi

Zamanlayıcılarla Çalışırken Thread Safety

Zamanlayıcılarla çalışırken, uygulamanızın iş parçacığı modelini anlamak önemlidir. System.Timers.Timer ve System.Threading.Timer, geri çağırmalarını bir iş parçacığı havuzu iş parçacığında gerçekleştirir, bu da paralel yürütmeye olanak sağlar. Ancak, geri çağırma yönteminiz paylaşılan verileri değiştiriyorsa veya kullanıcı arayüzü unsurlarıyla etkileşime giriyorsa iş parçacığı güvenliği sorunlarına neden olabilir. Bir zamanlayıcının geri çağırmasından UI elemanlarını güvenli bir şekilde güncellemek için, çağrıyı uygulamanızın türüne özgü teknikler kullanarak UI iş parçacığına geri göndermeniz gerekir (örneğin, Windows Forms'ta Invoke veya BeginInvoke kullanarak).

Yüksek Hassasiyetli Zamanlama

Yüksek hassasiyetli zamanlama gerektiren uygulamalar için (örneğin, multimedya uygulamaları veya oyunlar), System.Diagnostics.Stopwatch sınıfı, zamanı yüksek doğrulukla ölçmek için bir zamanlayıcıdan daha uygun olabilir. Kendi başına bir zamanlayıcı olmasa da, Stopwatch sınıfı, hassas zaman ölçümleri elde etmek için bir zamanlayıcı ile birlikte kullanılabilir.

Pratik Örnekler

Örnek: Geri Sayım Zamanlayıcı Uygulama

Bir zamanlayıcının kullanışlı olduğu yaygın bir senaryo, geri sayım zamanlayıcısı oluşturmaktır. Bu, zamanlayıcı aralığını bir saniye (1000 milisaniye) olarak ayarlayarak ve zamanlayıcı her sona erdiğinde bir sayacı azaltarak yapılabilir. Sayaç sıfıra ulaştığında, zamanlayıcı durur ve geri sayımın sona erdiğini gösterir.

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
            }
        }
    }
}

İşte yukarıdaki kodun çıktısı:

C# Zamanlayıcı (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - Geri Sayım Zamanlayıcı Çıkışı

Örnek: Düzenli Veritabanı Kontrolleri Planlama

Zamanlayıcılar, veritabanı üzerinde yeni veri sorgulama veya eski kayıtların temizlenmesi gibi düzenli kontroller yapmak için kullanılabilir. Bu örnek, her saat başı bir veritabanını sorgulamak için bir zamanlayıcı ayarlar:

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);
}

IronPDF'ye Giriş

IronPDF - HTML ve ASPX'ten Kolayca PDF Oluşturun özellikle HTML veya URL'lerden kolayca PDF'ler oluşturması nedeniyle övülmektedir, bu da uygulamanızın herhangi bir HTML İçeriğini PDF Belgesi Olarak "yazdırmasını" sağlar. Bu, raporlar, faturalar veya standart bir formatta sunulması gereken her türlü web içeriğini oluşturmak için son derece kullanışlıdır. IronPDF ayrıca CSS stilleri, JavaScript ve özel yazı tipleri gibi gelişmiş özellikleri destekler ve üretilen PDF'lerin web içeriğiyle uyumunu sağlar.

IronPDF'nin öne çıkan bir özelliği, düzen ve stilleri koruyan HTML'den PDF'ye Dönüştürme yeteneğidir. Web içeriğinden PDF'ler oluşturur, bu da raporlar, faturalar ve dokümantasyon için idealdir. HTML dosyaları, URL'ler ve HTML dizgileri kolayca PDF'lere dönüştürülebilir.

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");
    }
}

Installing IronPDF

Bu komutu çalıştırarak IronPDF'yi NuGet Paket Yöneticisi ile yükleyebilirsiniz:

PM > Install-Package IronPdf

Örnek

Günlük veriler içeren, her gün güncellenen PDF formatındaki günlük rapor oluşturma gereksiniminizin olduğunu hayal edin. Basitlik için, temel bir HTML raporu oluşturacağız ve her 24 saatte bir IronPDF kullanarak PDF'ye dönüştüreceğiz. C# uygulamanızda, her 24 saatte bir tetiklenecek bir System.Timers.Timer ayarlayacaksınız. Önemle belirtmek gerekir ki, aralık milisaniye cinsinden ayarlanır, bu nedenle 24 saat 24 * 60 * 60 * 1000 milisaniye olarak temsil edilir.

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}");
    }
}

Çıktı

Kodu çalıştırdığınızda, konsolda aşağıdaki çıktıyı gösterecektir. Hızlı çıktı için kodu değiştirdim, bu yüzden 10 saniyelik bir zamanlayıcı kullanıyorum.

C# Zamanlayıcı (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Konsol Çıktısı

İşte oluşturulan PDF:

C# Zamanlayıcı (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - PDF Raporu

Sonuç

Sonuç olarak, C# zamanlayıcılarının IronPDF ile entegrasyonu, .NET uygulamalarında PDF belgelerinin oluşturulması ve yönetimi için güçlü bir yaklaşım sunar. Verilen örnekler aracılığıyla, sık test amacıyla veya planlanmış rapor oluşturma için düzenli aralıklarla PDF oluşturma görevlerini tetiklemek için C# zamanlayıcısını nasıl kuracağımızı keşfettik.

C# zamanlayıcılarını kullanarak, PDF ile ilgili görevlerimizin ne zaman yürütüleceğini hassas bir şekilde kontrol edebilir, düzenli güncellemeler, rapor oluşturmaları veya bir takvime göre gerçekleşmesi gereken herhangi bir görevi kolaylaştırabiliriz. IronPDF, bu yeteneği artırarak dinamik içerik, HTML veya hatta web sayfalarına dayalı PDF belgeleri oluşturmanın, manipüle etmenin ve kaydetmenin kolay ve etkili bir yolunu sağlar.

IronPDF, sınırsız erişim ve destek için lisansları olan ücretsiz deneme lisansları sunar. Bu, .NET uygulamalarınızda kapsamlı PDF işlevlerini uygulamak için uygun maliyetli bir yol sağlar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez