Forum

Bildirimler
Hepsini Temizle

Timer Stop

7 Yazılar
2 Üyeler
0 Likes
574 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 
Aşağıda ki gibi bir timerım var bu timer ile otomatik mail gönderiyorum, servisi kapatmadıktan sonra timer iptal olmuyor timerı nasıl iptal edebilirim? 
public static void Main()    
{
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler( DisplayTimeEvent );
myTimer.Interval = 1000;
myTimer.Start();
} 
 
Gönderildi : 22/03/2011 20:00

(@ferhatkaratas)
Gönderiler: 100
Estimable Member
 

Bir timer'ı disable etmek myTimer.Stop(); kodunu kullanmanız gerekecek. Onun yerine mevcut servisinizin içindeki timer objesi içinde gönderimi bekleyen mail var mı kontrolunu yapmanız daha doğru olur. Gönderim yapılan mailler 1 yapılmayanlar 0 olarak işaretlenebilir. Her 5 dakkada bir veritabanı check edilir, statusu 0 olan mail varsa onlara gönderim yapılır. Böylece servisinizi kapatmanız gerekmez. Çünkü kapatırsanız bir daha kendi kendine başlamaz.

 
Gönderildi : 22/03/2011 21:18

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

İlginiz için teşekkür ederim ama benim yapmak istediğim textboxdan girilen sayı kadar timerdaki aralıklarla mail göndermek.

 Aşağıdaki kod parçacığıyla timerda ki aralıklarla mail gönderebiliyorum aynı zamanda donguye sokup textden girilen kadar da mail gönderebliyorum,

ama 2 sini birleştirip, textden gelen veri kadar timer daki aralıklarla mail gönderemiyorum. İnşallah anlatabilmişimdir. Teşekkürler

            timer1.Interval = 20000;
            timer1.Enabled = true;
            timer1.Elapsed += new ElapsedEventHandler(SaatMail);
            timer1.Start();

 
Gönderildi : 23/03/2011 12:37

(@ferhatkaratas)
Gönderiler: 100
Estimable Member
 

Yapmak istediğiniz, 20 saniyede bir toplamda X tane mail göndermek doğru mu ? X sayısına ulaşınca da gönderimi sonlandırmak.

Bunun için OnElapsedTime event'i içinde gönderim yapıyorsunuz zaten. Her gönderim yaptığınızda i++ diyerek i'yi bir artırın. i değişkenini de global tanımlayın. Böylece mail gönderdikçe 1 artacaktır. Yine OnElapsedTime event'i içinde bu i değerinin textboxtaki değere eşit olduğunu kontrol edin. Eğer i, textbox'taki değere eşit olmuşsa gönderim sayısı tamamlanmış demektir. Hemen akabinde timer.Stop() kodunu yazarsınız. Böylece windows uygulaması, gönderim sayısını tamamlandığında işlemi durduracaktır.

 
Gönderildi : 23/03/2011 13:18

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Yapmak istediğiniz, 20 saniyede bir toplamda X tane mail göndermek doğru mu ? X sayısına ulaşınca da gönderimi sonlandırmak.

Bunun için OnElapsedTime event'i içinde gönderim yapıyorsunuz zaten. Her gönderim yaptığınızda i++ diyerek i'yi bir artırın. i değişkenini de global tanımlayın. Böylece mail gönderdikçe 1 artacaktır. Yine OnElapsedTime event'i içinde bu i değerinin textboxtaki değere eşit olduğunu kontrol edin. Eğer i, textbox'taki değere eşit olmuşsa gönderim sayısı tamamlanmış demektir. Hemen akabinde timer.Stop() kodunu yazarsınız. Böylece windows uygulaması, gönderim sayısını tamamlandığında işlemi durduracaktır.

 

Ferhat bey ben bu dediğiniz yöntemi birebir uyguladım ama yine aynı timer hiç durmuyor devamlı dönmeye devam ediyor. Bu arada ben webservis ve web form kullanıyorum.

 
Gönderildi : 23/03/2011 13:39

(@ferhatkaratas)
Gönderiler: 100
Estimable Member
 

Web uygulamasında timer objesi çalışmayacaktır. Timer için ya windows uygulaması ya da windows service yazmanız lazım.

 
Gönderildi : 23/03/2011 18:57

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

   public void Main(int Sayi)
       {
           timer1.Interval = 10000;
           timer1.Elapsed += new ElapsedEventHandler(SaatMail);
           timer1.Enabled = true;
       }

        public void SaatMail(object sender,ElapsedEventArgs e)
        {
            int Sayi = 0;
            MailGonder(Sayi);
           
        }

        private void mailgonder(int Sayi)
        {

            MailMessage mvMail = new MailMessage();
            mvMail.To = "[email protected]";
            mvMail.From = "asd";
            mvMail.Body = "ss";
            mvMail.Subject = "ss";
            SmtpMail.SmtpServer = "mailserver";
            SmtpMail.Send(mvMail);

            i++;
            if (i == Sayi)
            {
                timer1.Dispose();
                timer1.Close();
                timer1.Enabled = false;
                timer1.Stop();
            }

 

Default.aspx.cs

  int Sayi = Convert.ToInt32(TextBox2.Text);
            servis.Main(Sayi);

 

Kodlarım Bu şekilde burda benim yapmak istediğim asp.net de textboxdan girdiğim veriyi burada ki web serviste sayi değişkeninle karşılaştırarak textbox da girilen kadar  belirttiğim aralıklarla mail göndermek.

Teşekkürler.

 
Gönderildi : 23/03/2011 20:20

Paylaş: