本文整理汇总了C#中ServiceController.Action方法的典型用法代码示例。如果您正苦于以下问题:C# ServiceController.Action方法的具体用法?C# ServiceController.Action怎么用?C# ServiceController.Action使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ServiceController
的用法示例。
在下文中一共展示了ServiceController.Action方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateTimer
public void CreateTimer(ServiceController.ServiceTimerParameters parameters)
{
if(!CanStop)
{
return;
}
//TODO: make ticks run in another thread //System.Threading.Thread.CurrentThread.ManagedThreadId
lock(_timerList)
{
var timer = new Timer(parameters.Interval);
_timerList.Add(timer);
var errorHandlingAction = new Action
(() =>
{
try
{
if(parameters.Validate != null && !parameters.Validate(DateTime.Now))
{
return;
}
parameters.Action();
}
catch(Exception e)
{
Logger.Error(e);
if(parameters.ErrorReporting)
{
//TODO make error reporting class with += support, mail + webservice
/*
try
{
var client = new SmtpClient
{
Port = ?,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Host = "?",
Credentials = new NetworkCredential("?", "?")
};
var mail = new MailMessage("?", "?")
{
Subject = $"Service Exception: {AssemblyUtils.GetEntryAssembly().GetName().Name}",
Body = e.ToString()
};
mail.CC.Add("?");
client.Send(mail);
}
catch (Exception)
{
Logger.Error(e);
}
}
*/
}
}
});
timer.Elapsed += (sender, args) =>
{
Logger.Trace("Timer {0} tick: {1}", sender.GetHashCode(), args.SignalTime);
errorHandlingAction();
};
errorHandlingAction();
timer.Enabled = true;
}
}