私は次のクラスを持っています:
class MyTimer
{
class MyTimerInvalidType : SystemException
{
}
class MyTimerNegativeCycles : SystemException
{
}
private Timer timer = new Timer(1000);
private int cycles = 0;
public int Cycle
{
get
{
return this.cycles;
}
set
{
if(value >= 0)
this.cycles = value;
else
throw new MyTimerNegativeCycles();
}
}
private void timer_Tick(object sender, ElapsedEventArgs e)
{
try
{
this.Cycle--;
}
catch
{
this.Cycle = 0;
timer.Stop();
}
}
public MyTimer()
{
this.Cycle = 20;
timer.Elapsed += new ElapsedEventHandler(timer_Tick);
timer.Start();
}
}
私の MainWindow クラスには、ボタンが押されたときに MyTimer を追加するリストがあります。
private List<MyTimer> timers = new List<MyTimer>();
private void testbtn_Click(object sender, RoutedEventArgs e)
{
timers.Add(new MyTimer());
}
MyTimer クラスにラベルを ref として渡して更新しようとしましたが、うまくいきません (別のスレッドから UI 要素にアクセスできません)。
値が変更されるたびに MyTimer.Cycle が更新されるように、ラベルに MyTimer.Cycle を表示する良い方法は何ですか?
各 MyTimer をコードとは異なるラベルに「バインド」できる必要があります (または、ラベルにまったくバインドできません)。