Silverlight C# ボタン クリック イベントを使用して、クリック後 10 秒一時停止し、特定の条件が満たされるまで x 秒ごとにメソッドを呼び出します: UI をフリーズせずに、x=y または経過秒数>=60 のいずれかです。
そこにはいくつかの異なる例があります。私はC#が初めてで、シンプルにしようとしています。私は次のことを思いつきましたが、どこに置くべきかを理解する必要がある最初の10秒間の待機がなく、無限ループがあるようです。これが私のコードです:
public void StartTimer()
{
System.Windows.Threading.DispatcherTimer myDispatchTimer = new System.Windows.Threading.DispatcherTimer();
myDispatchTimer.Interval = TimeSpan.FromSeconds(10); // initial 10 second wait
myDispatchTimer.Tick += new EventHandler(Initial_Wait);
myDispatchTimer.Start();
}
void Initial_Wait(object o, EventArgs sender)
{
System.Windows.Threading.DispatcherTimer myDispatchTimer = new System.Windows.Threading.DispatcherTimer();
// Stop the timer, replace the tick handler, and restart with new interval.
myDispatchTimer.Stop();
myDispatchTimer.Tick -= new EventHandler(Initial_Wait);
myDispatchTimer.Interval = TimeSpan.FromSeconds(5); //every x seconds
myDispatchTimer.Tick += new EventHandler(Each_Tick);
myDispatchTimer.Start();
}
// Counter:
int i = 0;
// Ticker
void Each_Tick(object o, EventArgs sender)
{
GetMessageDeliveryStatus(messageID, messageKey);
textBlock1.Text = "Seconds: " + i++.ToString();
}