Forum
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 ?
kod bilginiz yok ise servis yerine console yada Exe ile başlamak daha kolay olacaktır , ayrıca bir bat yazıp zamanlayabilirsiniz .
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);
}
}
Merhaba Volkan Hocam
Alakanıza teşekkür ederim. Kodu Pazartesi (yapabilir isem eğer) deneyip size dönüş sağlayacağım.