私はタイマーを使用しており、問題を解決するための最初のステップとしてスレッドを実装しました。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
、以前の値を無視することです。someReference の最新の値に置き換えずに、30 秒後に各値を送信するにはどうすればよいですか?