โดยปกติฉันจะได้รับข้อผิดพลาดนี้: (บริการ "ชื่อบริการ" บน Local Computer เริ่มทำงานแล้วหยุดบริการบางอย่างจะหยุดโดยอัตโนมัติหากไม่ได้ใช้งานโดยบริการหรือโปรแกรมอื่น) เมื่อมีบางอย่างผิดปกติกับรหัสของฉันเช่นไม่มีอยู่ เส้นทางการขับรถ ฯลฯ บริการ windows จะไม่เริ่มทำงาน
ฉันมีบริการ windows ที่สำรองโฟลเดอร์ / ไฟล์ไปยังตำแหน่งที่ตั้งถ้ามันถึงขนาด จำกัด รายละเอียดทั้งหมดมีให้โดยการกำหนดค่า XML ที่บริการ windows อ่านเมื่อเริ่มต้น ฉันมีรูปแบบหน้าต่างแยกต่างหากที่มีปุ่มที่ทำสิ่งที่บริการ Windows ของฉันกำลังทำอยู่ ฉันใช้แบบฟอร์ม windows ของฉันสำหรับการดีบักโค้ดก่อนที่จะใส่ลงในบริการ windows ของฉัน
เมื่อฉันเริ่มฟอร์ม windows ของฉัน มันทำในสิ่งที่คิดว่าจะทำ เมื่อฉันใส่รหัสของฉันในบริการ Windows วิธี OnStart () ข้อผิดพลาดปรากฏขึ้น
นี่คือรหัสของฉัน:
protected override void OnStart(string[] args)
{
private static string backupConfig = @"D:\LogBackupConfig\backupconfig.xml";
private static string serviceStat = @"D:\LogBackupConfig\Status.txt";
private static string fileFolderStat = @"D:\LogBackupConfig\FileFolderStat.txt";
protected override void OnStart(string[] args)
{
if (File.Exists(backupConfig))
{
FileSystemWatcher watcher = new FileSystemWatcher();
XmlTextReader reader = new XmlTextReader(backupConfig);
XmlNodeType type;
List<string> listFile = new List<string>();
string fileWatch = "";
//this loop is for reading XML elements and assigning to variables
while (reader.Read())
{
type = reader.NodeType;
if (type == XmlNodeType.Element)
{
if (reader.Name == "File")
{
reader.Read();
fileWatch = reader.Value;
}
else if (reader.Name == "Folder")
{
reader.Read();
fileWatch = reader.Value;
}
}
}
reader.Close();
watcher.Path = fileWatch;
watcher.Filter = "*.*";
//this loop reads whether the service will watch a file/folder
XmlTextReader reader1 = new XmlTextReader(backupConfig);
while (reader1.Read())
{
type = reader1.NodeType;
if (type == XmlNodeType.Element)
{
if (reader1.Name == "File")
{
watcher.IncludeSubdirectories = false;
watcher.Changed += new FileSystemEventHandler(OnChangedFile);
}
else if (reader1.Name == "Folder")
{
watcher.IncludeSubdirectories = true;
watcher.Changed += new FileSystemEventHandler(OnChangedFolder);
}
}
}
reader1.Close();
watcher.EnableRaisingEvents = true;
}
else
{
StreamWriter sw = new StreamWriter(serviceStat, true);
sw.WriteLine("File not found. Please start the Log Backup UI first.");
sw.Close();
}
}
ฉันไม่รู้ว่าอะไรที่ทำให้บริการ windows ไม่เริ่มทำงานตัวจำลองฟอร์มของหน้าต่างทำงานได้ดี สิ่งที่ดูเหมือนจะเป็นปัญหา?
อัปเดต: หลังจากการทดลองหลายครั้งฉันสังเกตเห็นว่าใช้ไดเร็กทอรีโฟลเดอร์เท่านั้น (ไม่มีไฟล์) บริการ windows ไม่ทำงาน เมื่อฉันแทนที่ตัวแปร fileWatch ด้วยไฟล์เฉพาะ (รวมถึงไดเร็กทอรี) บริการ windows จะเริ่มทำงาน เมื่อฉันเปลี่ยนกลับไปที่ตำแหน่งโฟลเดอร์ก็ไม่ได้ผล สิ่งที่ฉันคิดคือตำแหน่งโฟลเดอร์ไม่ทำงานใน filewatcher
เมื่อฉันพยายามสร้างบริการ windows ใหม่ที่เฝ้าดูตำแหน่งโฟลเดอร์มันใช้งานได้ .. อย่างไรก็ตามเมื่อฉันลองใช้ตำแหน่งเดิมในบริการ windows เดิมของฉันมันไม่ได้ผล! ฉันคิดว่า $ # * ed! ดูเหมือนว่าฉันต้องสร้างบริการ windows ใหม่และสร้างโปรแกรมติดตั้งทุกครั้งที่ฉันวางโค้ด / ฟังก์ชันใหม่ .. วิธีนี้ทำให้ฉันสามารถติดตามได้ว่าฉันพบข้อผิดพลาดที่ใด