खोज…


वाक्य - विन्यास

  • myTimer.Interval - कितनी बार "टिक" ईवेंट को (मिलीसेकंड में) सेट करता है
  • myTimer.Enabled - बूलियन मान जो सक्षम / अक्षम होने के लिए टाइमर सेट करता है
  • myTimer.Start() - टाइमर शुरू करता है।
  • myTimer.Stop() - टाइमर को रोकता है।

टिप्पणियों

यदि विजुअल स्टूडियो का उपयोग किया जाता है, तो टाइमर को आपके टूलबॉक्स से सीधे नियंत्रण के रूप में जोड़ा जा सकता है।

मल्टीथ्रेडर्स टाइमर

System.Threading.Timer - सबसे सरल मल्टीथ्रेडेड टाइमर। दो विधियाँ और एक निर्माणकर्ता शामिल है।

उदाहरण: एक टाइमर डेटाविराइट विधि को कॉल करता है, जो "मल्टीथ्रेड निष्पादित ..." लिखता है, पांच सेकंड बीतने के बाद और उसके बाद हर सेकंड तब तक जब तक उपयोगकर्ता दर्ज नहीं करता है:

using System;
using System.Threading;
class Program
{
  static void Main()
  {
    // First interval = 5000ms; subsequent intervals = 1000ms
    Timer timer = new Timer (DataWrite, "multithread executed...", 5000, 1000);
    Console.ReadLine();
    timer.Dispose(); // This both stops the timer and cleans up.
  }

  static void DataWrite (object data)
  {
    // This runs on a pooled thread
    Console.WriteLine (data); // Writes "multithread executed..."
  }
}

नोट: मल्टीथ्रेडेड टाइमर निपटाने के लिए एक अलग सेक्शन पोस्ट करेगा।

Change - इस पद्धति को तब बुलाया जा सकता है जब आप टाइमर अंतराल को बदलना चाहेंगे।

Timeout.Infinite - अगर आप बस एक बार फायर करना चाहते हैं। इसे निर्माता के अंतिम तर्क में निर्दिष्ट करें।

System.Timers - .NET फ्रेमवर्क द्वारा प्रदान किया गया एक और टाइमर वर्ग। यह System.Threading.Timer लपेटता है।

विशेषताएं:

  • IComponent - इसे विजुअल स्टूडियो के डिज़ाइनर घटक ट्रे में IComponent अनुमति देता है
  • Change तरीके के बजाय Interval संपत्ति
  • एक कॉलबैक delegate बजाय Elapsed event
  • टाइमर शुरू करने और रोकने के लिए Enabled संपत्ति ( default value = false )
  • यदि आप Enabled संपत्ति (बिंदु से ऊपर) से भ्रमित होते हैं, तो Start और Stop
  • आवर्ती घटना के संकेत के लिए AutoReset - ( default value = true )
  • WPF तत्वों और Windows प्रपत्र नियंत्रणों पर सुरक्षित रूप से कॉल करने के तरीकों के लिए Invoke और BeginInvoke विधियों के साथ SynchronizingObject गुण

उपरोक्त सभी विशेषताओं का प्रतिनिधित्व करने वाला उदाहरण:

using System;
using System.Timers; // Timers namespace rather than Threading
class SystemTimer
{
  static void Main()
  {
    Timer timer = new Timer(); // Doesn't require any args
    timer.Interval = 500;
    timer.Elapsed += timer_Elapsed; // Uses an event instead of a delegate
    timer.Start(); // Start the timer
    Console.ReadLine();
    timer.Stop(); // Stop the timer
    Console.ReadLine();
    timer.Start(); // Restart the timer
    Console.ReadLine();
    timer.Dispose(); // Permanently stop the timer
 }

 static void timer_Elapsed(object sender, EventArgs e)
 {
   Console.WriteLine ("Tick");
 }
}

Multithreaded timers - थ्रेड पूल का उपयोग करने के लिए कई टाइमर की सेवा के लिए कुछ धागे की अनुमति देते हैं। इसका मतलब है कि कॉलबैक विधि या Elapsed ईवेंट हर बार अलग थ्रेड पर ट्रिगर हो सकता है जिसे यह कहा जाता है।

Elapsed - यह ईवेंट हमेशा समय पर फायर करता है - चाहे पिछले Elapsed ईवेंट को अंजाम देना हो। इस वजह से, कॉलबैक या ईवेंट हैंडलर को थ्रेड-सुरक्षित होना चाहिए। मल्टीथ्रेडेड टाइमर की सटीकता ओएस पर निर्भर करती है, और आमतौर पर 10-20 एमएस में होती है।

interop - जब कभी आपको अधिक सटीकता की आवश्यकता होती है तो इसका उपयोग करें और विंडोज मल्टीमीडिया टाइमर को कॉल करें। इसकी सटीकता 1 ms तक है और इसे winmm.dll में परिभाषित किया गया है।

timeBeginPeriod - OS को सूचित करने के लिए इसे पहले कॉल करें जिसे आपको उच्च समय सटीकता की आवश्यकता है

timeSetEvent - के बाद इस फोन timeBeginPeriod एक मल्टीमीडिया टाइमर शुरू करने के लिए।

timeKillEvent - जब आप काम पूरा कर लें, तो यह टाइमर बंद कर देता है

timeEndPeriod - OS को सूचित करने के लिए यह कॉल करें कि अब आपको उच्च समय सटीकता की आवश्यकता नहीं है।

आप इंटरनेट पर संपूर्ण उदाहरण पा सकते हैं जो कि मल्टीमीडिया टाइमर का उपयोग करके कीवर्ड dllimport winmm.dll timesetevent खोज करते हैं।

टाइमर का एक उदाहरण बनाना

टाइमर का उपयोग समय के विशिष्ट अंतराल पर कार्य करने के लिए किया जाता है (Do X every Y seconds) नीचे एक नया उदाहरण एक टाइमर बनाने का है।

नोट : यह WinForms का उपयोग करके टाइमर पर लागू होता है। यदि WPF का उपयोग कर रहे हैं, तो आप DispatcherTimer में देखना चाहते हैं

    using System.Windows.Forms; //Timers use the Windows.Forms namespace

    public partial class Form1 : Form
    {

        Timer myTimer = new Timer(); //create an instance of Timer named myTimer

    
        public Form1()
        {
            InitializeComponent();
        }

    }

"टिक" इवेंट हैंडलर को एक टाइमर को सौंपना

एक टाइमर में किए गए सभी कार्यों को "टिक" घटना में संभाला जाता है।

public partial class Form1 : Form
{

    Timer myTimer = new Timer();

    
    public Form1()
    {
        InitializeComponent();

        myTimer.Tick += myTimer_Tick; //assign the event handler named "myTimer_Tick"
    }

    private void myTimer_Tick(object sender, EventArgs e)
    {
        // Perform your actions here.
    }
}

उदाहरण: एक साधारण उलटी गिनती करने के लिए टाइमर का उपयोग करना।

    public partial class Form1 : Form
    {

    Timer myTimer = new Timer();
    int timeLeft = 10;
    
        public Form1()
        {
            InitializeComponent();

            //set properties for the Timer
            myTimer.Interval = 1000;
            myTimer.Enabled = true;

            //Set the event handler for the timer, named "myTimer_Tick"
            myTimer.Tick += myTimer_Tick;

            //Start the timer as soon as the form is loaded
            myTimer.Start();

            //Show the time set in the "timeLeft" variable
            lblCountDown.Text = timeLeft.ToString();

        }

        private void myTimer_Tick(object sender, EventArgs e)
        {
            //perform these actions at the interval set in the properties.
            lblCountDown.Text = timeLeft.ToString();
            timeLeft -= 1;

            if (timeLeft < 0)
            {
                myTimer.Stop();
            }
        }
    }

का परिणाम...

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें

और इसी तरह...



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow