untangle-puzzlegame/Library/PackageCache/com.unity.collab-proxy@50ac96531b63/Editor/UI/UnityPlasticTimer.cs
2025-04-17 17:33:08 -04:00

57 lines
1.5 KiB
C#

using System;
using System.Timers;
using Codice.Client.Common.Threading;
namespace Unity.PlasticSCM.Editor.UI
{
internal class UnityPlasticTimerBuilder : IPlasticTimerBuilder
{
IPlasticTimer IPlasticTimerBuilder.Get(bool bModalMode, ThreadWaiter.TimerTick timerTickDelegate)
{
return new UnityPlasticTimer(DEFAULT_TIMER_INTERVAL, timerTickDelegate);
}
IPlasticTimer IPlasticTimerBuilder.Get(bool bModalMode, int timerInterval, ThreadWaiter.TimerTick timerTickDelegate)
{
return new UnityPlasticTimer(timerInterval, timerTickDelegate);
}
const int DEFAULT_TIMER_INTERVAL = 100;
}
internal class UnityPlasticTimer : IPlasticTimer
{
internal UnityPlasticTimer(int timerInterval, ThreadWaiter.TimerTick timerTickDelegate)
{
mTimerInterval = timerInterval;
mTimerTickDelegate = timerTickDelegate;
}
void IPlasticTimer.Start()
{
mTimer = new Timer();
mTimer.Interval = mTimerInterval;
mTimer.Elapsed += OnTimerTick;
mTimer.Start();
}
void IPlasticTimer.Stop()
{
mTimer.Stop();
mTimer.Elapsed -= OnTimerTick;
mTimer.Dispose();
}
void OnTimerTick(object sender, EventArgs e)
{
mTimerTickDelegate();
}
Timer mTimer;
int mTimerInterval;
ThreadWaiter.TimerTick mTimerTickDelegate;
}
}