lostyazilim
tr.link

C# & VB.NET 24 saatte bir işlem yaptırmak

10 Mesajlar 3.439 Okunma
lstbozum
tr.link

delightphone delightphone Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 02.01.2016
  • Yaş/Cinsiyet 29 / E
  • Meslek öğrenciyim
  • Konum Konya
  • Ad Soyad A** Y**
  • Mesajlar 34
  • Beğeniler 1 / 2
  • Ticaret 1, (%0)
C# veya vb.net'de 24 saatte bir işlem yaptırmak istiyorum istediğim şey : uygulama atıyorum form1 de başlıyor 24 saatte 1 kere form 1 den açılsın diğer girişlerde form2 den açılsın istiyorum bu mümkün mü ?
 

 

wmaraci
reklam

mhmtyc mhmtyc info4idea.com Kullanıcı
  • Üyelik 26.10.2014
  • Yaş/Cinsiyet 30 / E
  • Meslek Öğrenci
  • Konum Kocaeli
  • Ad Soyad M** Y**
  • Mesajlar 221
  • Beğeniler 2 / 39
  • Ticaret 4, (%100)
timer ile yapabilirsin
 

 

cetvel cetvel WM Aracı Kullanıcı
  • Üyelik 22.09.2015
  • Yaş/Cinsiyet 35 / E
  • Meslek yazılım
  • Konum İstanbul Avrupa
  • Ad Soyad U** K**
  • Mesajlar 312
  • Beğeniler 110 / 101
  • Ticaret 0, (%0)
direk windows service olarak gelistir
 

 

phpanaliz.com

delightphone delightphone Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 02.01.2016
  • Yaş/Cinsiyet 29 / E
  • Meslek öğrenciyim
  • Konum Konya
  • Ad Soyad A** Y**
  • Mesajlar 34
  • Beğeniler 1 / 2
  • Ticaret 1, (%0)
nasıl yapacağım detay verir misiniz
 

 

wmaraci
wmaraci

THEX3T4R THEX3T4R @Back-End Developer. Kullanıcı
  • Üyelik 18.11.2015
  • Yaş/Cinsiyet 29 / E
  • Meslek @Back-End Developer.
  • Konum Diğer
  • Ad Soyad R** E**
  • Mesajlar 693
  • Beğeniler 24 / 200
  • Ticaret 1, (%100)
2 Yöntem ile yapabilirsin.
1 Kod yazayım ama sağlam olsun (Timer); Timer foruma eklenen bir araçtır ve belirlenen saniye sonra bir işlem yaptırmak için kullanılıyor google "C# time kullanımı" veya "C# timer examples" diye aratırsan basit örnekler ile timer_Tick bölümüne form acma kodunu yazarsın ve form load bölümüne yazmış olduğun timer.Interval = 86400; gibi belirlediğin 24 saat (1 gün 86400 saniyedir) ile işlemini çağırırsın.
2 Yöntem Windows service ;
Windows service , belirli aralıklar ile bir işlem yaptırmak için kullanılan windows ile hazır gelen bir araçtır örneğin 24 saat sonra şu programı aç gibi
Hazırladığın exe windows service ile belirli aralıklar ile actıra bilirsin. (google "Windows service kullanımı") diye ararsan bir çok örnek bulursun
 

 

delightphone delightphone Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 02.01.2016
  • Yaş/Cinsiyet 29 / E
  • Meslek öğrenciyim
  • Konum Konya
  • Ad Soyad A** Y**
  • Mesajlar 34
  • Beğeniler 1 / 2
  • Ticaret 1, (%0)
timer bölümü uygulama açık kaldığı sürece işliyor olmayacak mı benim istediğim şey uygulama açık olsa da olmasa da bir kere form 1 den açılsın sonrasında form2 den 24 saat sonra form1 açılsın
 

 

SefaCanDemir SefaCanDemir Front-End Developer Kullanıcı
  • Üyelik 10.11.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Front-End Developer
  • Konum Adana
  • Ad Soyad S** D**
  • Mesajlar 1345
  • Beğeniler 234 / 472
  • Ticaret 12, (%100)
THEX3T4R Timer lar saniye ile değil mili saniye ile çalışmaktadır. Dolayısıyla 86400 86.4 saniyeye denk gelir.

Windows service kullanamıyorsanız çok basit bir mantık ile çözebilirsiniz. StreamWriter ile programın dosya konumuna bir belge yazdırırsınız. Bu belge de de Form 2 nin açılış tarihi ve saatini bulundurursunuz. Timer ile de dakikada bir şuanki tarih saatten yazılı tarih saati çıkartarak kontrol ettirirsiniz.
 

 

sefacandemir.com.tr

THEX3T4R THEX3T4R @Back-End Developer. Kullanıcı
  • Üyelik 18.11.2015
  • Yaş/Cinsiyet 29 / E
  • Meslek @Back-End Developer.
  • Konum Diğer
  • Ad Soyad R** E**
  • Mesajlar 693
  • Beğeniler 24 / 200
  • Ticaret 1, (%100)
SefaCanDemir Ufak bir yazım yanlışım olmuş. :)
Streamwriter böyle bir şey için gereksiz.
 

 

SefaCanDemir SefaCanDemir Front-End Developer Kullanıcı
  • Üyelik 10.11.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Front-End Developer
  • Konum Adana
  • Ad Soyad S** D**
  • Mesajlar 1345
  • Beğeniler 234 / 472
  • Ticaret 12, (%100)
Amelelik olacak şeyi çözemedim. Sadece 2 satır, Load Eventına yazması yeterli.

StreamWriter sw = new StreamWriter("checktimes.abc");
sw.WriteLine(DateTime.Now.ToString());
 

 

sefacandemir.com.tr

SefaCanDemir SefaCanDemir Front-End Developer Kullanıcı
  • Üyelik 10.11.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Front-End Developer
  • Konum Adana
  • Ad Soyad S** D**
  • Mesajlar 1345
  • Beğeniler 234 / 472
  • Ticaret 12, (%100)
Nasıl iki zaman arasındaki farkı hesaplayacağınızı ve bu zamanları nasıl program kapansa dahi elinizde tutacağınız basit bir mantığı yorum satırları ile proje üzerinde detaylıca anlattım.

Proje Bağlantıları:

Proje
VirusTotal


İndirmek istemeyenler için tüm source:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CheckTime
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Programın Çalıştığı Dosyanın Konumu:
string program_directory = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
//Kaydedilecek Dosya Adı ve Uzantısı (Uzantı size kalmıştır dilediğiniz gibi uzantı kullanabilirsiniz isterseniz .adınız yapın hiç fark etmez.):
string filename = @"/checktime.sefa";
private void btn_OpenForm2_Click(object sender, EventArgs e)
{
//Yeni bir StreamWriter oluşturup belirlediğimiz dosya yoluna ve adına yazmasını belirtiyoruz:
StreamWriter sw = new StreamWriter(program_directory+filename);
//Ve son olarak bu dosyaya yazacağı şeyi yani Form2'nin açılış tarihini yazdırıyoruz
//Bu butona basılınca Form2 yi açacağından basıldığı zaman Form2'nin açılış zamanıdır. Dolayısıyla DateTime.Now (Şuan) çekmemiz yeter:
sw.Write(DateTime.Now.ToString());
sw.Dispose();
//Şimdi de Form2 yi oluşturup açıyoruz:
Form Form2 = new Form
{
Text = "2. Form",
ShowIcon = false
};
Form2.Show();
}

private void Form1_Load(object sender, EventArgs e)
{
//Burada ana form yüklenirken progrmaın dosya yolunda bir checktime.sefa dosyası olup olmadığını kontrol edip eğer varsa içindeki zamanı çektireceğiz.
//Ve daha sonra çektiğimiz o zaman ile Form2'yi açan butonun tekrar aktif olması için istediğimiz zaman farkı şartını belirteceğiz.

//Dosyanın olup olmadığını bilmediğimiz için bunu try catch ile gerçekleştireceğiz. Dosyayı başka türlü kontrol etme şansımızda var,
//fakat zaten try catch işimizi yeterince görüyorken başka bir kütüphane importlayıp kasmaya gerek yok.
try
{
//StreamReaderımızı oluşturup programın konumundaki checktime.sefa dosyasını okuması için hazırladık.
StreamReader sr = new StreamReader(program_directory + filename);
//Okuyacağı veri String olduğu için DateTime olarak çevirdik ve dt adlı bir DateTime'ın içine attık.
DateTime dt = Convert.ToDateTime(sr.ReadLine());
//Form2'nin açılış tarihini formdaki labela yazdırdık:
lab_time.Text = dt.ToString();
//Form2'nin tekrar açılması için kalan süreyi formdaki labela yazdırdık:
// Math Round ile 2 saat arasındaki çıkan sonucun ondalık değerini 2 basamağa indirgedik:
lab_remaining.Text = Math.Round((24 - (DateTime.Now - dt).TotalHours),2).ToString() + " Saat";
//Bir if kontrolü ile açılış zamanı ile şuan arasında 24 saat olup olmadığını kontrol ettik:
if ((DateTime.Now - dt).TotalHours < 24)
{
//Açılış tarihi ile şuan arasındaki toplam saat 24 den küçük ise. Yani 24 saat geçmemişse Form2 yi açamaması için
//Butonun enabled değerini false yaptık.
btn_OpenForm2.Enabled = false;
}
else
{
//Açılış tarihi ile şuan arasındaki toplam saat 24 den küçük değilse. Yani 24 saat geçmişse Form2 yi tekrar açabilmesi için
//Butonun enabled değerini true yaptık.
btn_OpenForm2.Enabled = true;
//Ve checktime.sefa dosyasını sildirerek yeni giriş için hazır hale getiriyoruz:
File.Delete(program_directory + filename);
}


}
catch (Exception) //StreamReader'ın okuyacağı dosya yok ise;
{
//StreamReader'ın okuyacağı dosya yani zaman dosyası yok ise daha önce Form2 açılmamış demektir. Bu nedenle Form2 yi açmasına izin verip,
//Enabled değerini true yapıyoruz.
btn_OpenForm2.Enabled = true;
}

}
}
}



Dip not: Dileyenler try cacth yerine if ile File.Exit() kontrolü de yapabilir.
 

 

sefacandemir.com.tr
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al