【发布时间】:2015-04-11 08:52:08
【问题描述】:
我希望我的服务能够启动与其他服务的通信。
为了让它像客户端一样启动通信,我认为在构造函数计时器中初始化,每 x 秒调用一个方法可能是个好主意。
这是个坏主意吗?
【问题讨论】:
标签: c# wcf timer communication
我希望我的服务能够启动与其他服务的通信。
为了让它像客户端一样启动通信,我认为在构造函数计时器中初始化,每 x 秒调用一个方法可能是个好主意。
这是个坏主意吗?
【问题讨论】:
标签: c# wcf timer communication
我看不出这种方法有什么问题。
您可以使用 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();
}
}
【讨论】:
timer 而不是DispatcherTimer,我读到它不一样,因为它们运行的线程。就我而言,没有表格,所以DispatcherTimer 是正确的吗?