WCF+ 定时器。不好的做法?
WCF+ timer. A bad practice?
我希望我的服务能够启动与其他服务的通信。
为了让它像客户端一样运行并开始通信,我认为在构造函数中初始化每 x 秒调用一个方法的计时器可能是个好主意。
这是个坏主意吗?
我看不出这种方法有什么问题。
您可以利用 System.Timers.Timer - https://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.110%29.aspx
将其 Interval 设置为您想要触发 Elapsed 计时器事件的值。使用您实现的事件处理程序订阅 Elapsed 事件,您将在其中与外部服务通信。
编辑:简单示例
class Program
{
private static void timer_ElapsedEventHandler(object sender, EventArgs e)
{
// communicate to external service
Console.WriteLine("ElapsedEventHandler fired");
}
static void Main(string[] args)
{
var timer = new System.Timers.Timer();
timer.Interval = 3000;
timer.Elapsed += timer_ElapsedEventHandler;
timer.Start();
Console.WriteLine("Timer started");
Console.ReadLine();
}
}
我希望我的服务能够启动与其他服务的通信。
为了让它像客户端一样运行并开始通信,我认为在构造函数中初始化每 x 秒调用一个方法的计时器可能是个好主意。
这是个坏主意吗?
我看不出这种方法有什么问题。
您可以利用 System.Timers.Timer - https://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.110%29.aspx
将其 Interval 设置为您想要触发 Elapsed 计时器事件的值。使用您实现的事件处理程序订阅 Elapsed 事件,您将在其中与外部服务通信。
编辑:简单示例
class Program
{
private static void timer_ElapsedEventHandler(object sender, EventArgs e)
{
// communicate to external service
Console.WriteLine("ElapsedEventHandler fired");
}
static void Main(string[] args)
{
var timer = new System.Timers.Timer();
timer.Interval = 3000;
timer.Elapsed += timer_ElapsedEventHandler;
timer.Start();
Console.WriteLine("Timer started");
Console.ReadLine();
}
}