我正在一个窗口服务应用程序和我的窗口服务将在特定时间间隔(例如3分钟)调用Web服务之一。从Web服务中,我将从数据库获取数据并使用该数据,我将发送一封电子邮件。
如果我有我的数据库表庞大的整套行还需要一定的时间间隔发送邮件,在这里我有问题:如何使Windows服务请求等待,直到前一个请求完成
窗口服务发送第一个请求,它会处理一些集的记录,以便在通过Web服务处理它时,窗口服务在完成第一个请求之前向Web服务发送另一个请求。 由于这个原因,当Web服务从Windows服务接收到新的请求时,会一次又一次地从数据库中获取相同的记录。
任何人可以建议我如何锁定先前的请求,直到它完成其工作或其他方式来处理这种情况?
Web服务调用:
protected override void OnStart(string[] args)
{
timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Interval = 180000;
timer.AutoReset = false;
timer.Enabled = true;
}
**里面方法**
使用(MailWebService调用=新MailWebService()){
try
{
call.ServiceUrl = GetWebServiceUrl();
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
call.CheckMailQueue();
}
catch (Exception ex)
{
LogHelper.LogWriter(ex);
}
finally
{
}
}
您能告诉我们您是如何致电网络服务的吗?但基本上你需要等待在第一个请求完成的Windows服务,在发送另一个之前... – ChrFin
protected override void OnStart(string [] args) { timer.Elapsed + = new ElapsedEventHandler(OnElapsedTime); timer.Interval = 180000; timer.AutoReset = false; timer.Enabled = true; } 我打电话使用定时器时间间隔的网络服务 – user3839950
您可以使用代码格式编辑(和'OnElapsedTime')到您的问题吗? – ChrFin