Forum

Windows Servisi
 
Bildirimler
Hepsini Temizle

Windows Servisi

4 Yazılar
3 Üyeler
0 Likes
763 Görüntüleme
(@oguzhanbitlisli)
Gönderiler: 180
Reputable Member
Konu başlatıcı
 

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 ?

 
Gönderildi : 16/12/2017 14:04

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

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

 
Gönderildi : 16/12/2017 20:07

(@volkanalkilic)
Gönderiler: 137
Estimable Member
 

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

 
Gönderildi : 16/12/2017 21:25

(@oguzhanbitlisli)
Gönderiler: 180
Reputable Member
Konu başlatıcı
 

Merhaba Volkan Hocam

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

 
Gönderildi : 17/12/2017 01:24

Paylaş: