Я хочу написать журнал ошибок из службы Windows. Я знаю, что нужно вызвать пользовательскую команду из службы Windows, но она не позволяет использовать какие-либо параметры. Я хочу передать свое сообщение об ошибке службе, и customcommand запишет журнал. Как мне это сделать. я пробовал кое-что
Я создал статическую строковую переменную в своем библиотечном классе. Всякий раз, когда возникает ошибка, я вызываю функцию, например
ATELib.AteBAC.getErrorMessage = "error message from client";
ServiceController Controller = new ServiceController("ATELogsService");
if (Controller.Status == ServiceControllerStatus.Running)
{
Controller.ExecuteCommand(128);
}
и код в моем сервисе
protected override void OnCustomCommand(int command)
{
if (command == 128)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(Application.StartupPath + @"\ATELogCheck.txt", true))
{
file.WriteLine(ATELib.AteBAC.getErrorMessage);
ATELib.AteBAC.getErrorMessage = null;
}
}
}
он создает файл журнала ошибок (ATELogCheck.txt), но сообщение об ошибке (строковое значение) отсутствует в файле, создавая пустой текстовый файл. Это статическая переменная, хотя она и пишется пустой. Я использую протокол tcp и вызываю объект службы как
baCls = (ATELib.AteBAC)Activator.GetObject(typeof(ATELib.AteBAC), "tcp://localhost:9090/ATE");
Как я могу передать строковое значение сервису?
ATELib.AteBAC.getErrorMessage
между вашим сервисом и клиентом не совпадает. Вам нужна какая-то форма IPC для отправки этой строки. - person Tung   schedule 05.12.2013