我正在使用计时器,并且已将线程化作为解决问题的第一步。我必须每30秒发送一次参考,并且每次单击按钮都会创建此参考。所以我有以下代码:
public MyReference SomeReference {get;set;}
public string MyFullName {get;set;} //this is bound to WPF textbox
public bool Saved()
{
SomeReference.Id = GeneratedId;
SomeReference.FullName = MyFullName;
return SavedtoDB(SomeReference);
}
public void OnButtonClick()
{
if(Saved()) //timer should only start if it is already saved in the database
var t = new Thread(() => ExecuteTimer(SomeReference));
}
public void ExecuteTimer(MyReference someReference)
{
System.Timers.Timer sendTimer = new System.Timers.Timer(30000);
sendTimer.Elapsed += (sender,e) => ExecuteElapsed(sender,e,someReference,sendTimer);
sendTimer.Start();
}
public void ExecuteElapsed(object source,ElapsedEventArgs e,MyReference someReference,System.Timers.Timer sendtimer)
{
sendtimer.Stop();
Send(someReference);
}
以下是MyReference类:
public class MyReference()
{
public string Id {get;set;}
public string FullName {get;set;}
}
编辑以强调问题:
问题在于它仅发送最新值someReference
,而忽略先前的值。我将如何在30秒后发送每个值,而又不将它们替换为最新的someReference值?