Forum

Bildirimler
Hepsini Temizle

Windows Servisi

Oguzhan Bitlisli
(@oguzhanbitlisli)
Üye

Merhaba

    Benim bir adet winodws servisine ihtiyacım var. Bu servisin görevi; (ağda paylaşıma açılmış olan klasörü) bilgisyara map edilen bir sürücünün (z,y gibi;) durumunu kontrol edecek eğer map edilen sürücü down veya offline ise bağlantısı koparıp tekradan map edecek veya down-offline olan sürücüyü aktif hale getirmek için ne gerekiyor ise onu yapacak. Bu görevi belli aralıklar ile yapacak (15dk da bir falan) ayrıca her çalışma sonrası olay günlüğüne işlem sonucunu kayıt edecek bir servise ihtiyacım var. Bunu yazabilecek bir kod bilgim yok. hali hazırda böyle bir kod varmıdır veya bana bu konuda yardımcı olabilirmisiniz ?

Alıntı
Konu başlatıcı Gönderildi : 16/12/2017 14:04
Birol AYDOĞAN
(@birolaydugan)
Üye

kod bilginiz yok ise servis yerine console yada Exe ile başlamak daha kolay olacaktır , ayrıca bir bat yazıp zamanlayabilirsiniz .

CevapAlıntı
Gönderildi : 16/12/2017 20:07
Volkan Alkılıç
(@volkanalkilic)
Üye

Selam,

Örnek bir kod hazırladım, aşağıda bulabilirsiniz. Bu kodu Visual Studio ile oluşturacağınız servis uygulamasının başlangıç noktasına yapıştırıp dizini set edin.

Servis uygulamasını nasıl oluşturacağınızı buradan okuyun:  https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer

 

void Main()
{

//NOT: Bu örnek bir consol uygulamasıdır. Aşağıdaki 3 satırı servis uygulamasının constructor bölümüne yapıştırın.

CancellationTokenSource tokenSource = new CancellationTokenSource();

Task görev = PriyodikÇalış(Kontrol, TimeSpan.FromMinutes(15), tokenSource.Token);

görev.Wait();

}

 

public static string Dizin = @"\\172.16.22.11\Updates";

public void Kontrol()
{
if (!Directory.Exists("Z:"))
{
System.Diagnostics.Process.Start("net.exe", "use Z: " + Dizin);
if (!Directory.Exists("Z:"))
{
Log("Z sürücüsü map edilemedi!");
}
else
{
Log("Z sürücüsü başarıyla map edildi.");
}
}
else
{
Log("Z sürücüsü mevcut.");
}
}
public void Log(string mesaj)
{
using (EventLog eventLog = new EventLog("Application"))
{
eventLog.Source = "Application";
eventLog.WriteEntry(mesaj, EventLogEntryType.Information, 101, 1);
}
}
async Task PriyodikÇalış(Action action, TimeSpan interval, CancellationToken token)
{
while (true)
{
action();
await Task.Delay(interval, token);
}
}

CevapAlıntı
Gönderildi : 16/12/2017 21:25
Oguzhan Bitlisli
(@oguzhanbitlisli)
Üye

Merhaba Volkan Hocam

    Alakanıza teşekkür ederim. Kodu Pazartesi (yapabilir isem eğer) deneyip size dönüş sağlayacağım.

CevapAlıntı
Konu başlatıcı Gönderildi : 17/12/2017 01:24
Paylaş: