Использование секундомера для оценки использования приложения
Привет, я пытаюсь создать глобальный класс, который я могу использовать в своих проектах, я намерен использовать его в качестве шаблона по умолчанию, я новичок, поэтому, пожалуйста, будьте терпеливы;)
Stopwatch Masterstopwatch = new Stopwatch();
#if DEBUG
private static void ApplicationLogStart()
{
StartTime = DateTime.Now;
Masterstopwatch.Start();
String eventName = "Program Loaded";
String errorDetails = "Program has started Succesfully";
DataLogEntry(eventName, errorDetails);
}
private static void ApplicationLogclosing()
{
String eventName = "Program is closing";
String errorDetails = "Program has closed Succesfully";
DataLogEntry(eventName, errorDetails);
StopTime = DateTime.Now;
Masterstopwatch.Stop();
Benchmark(StartTime,StopTime,Masterstopwatch.Elapsed);
}
#endif
Я подозреваю, что я совершенно ошибочен в своем дизайне, так как я хочу секундомер Masterstopwatch = new Stopwatch(); быть объявленным глобально без использования метода, я подозреваю, что это невозможно, но мне нужно спросить спасибо
1 ответ
Решение
Похоже, вам нужен шаблон Singleton.
Если вы объявите обертку вокруг секундомера следующим образом, вы сможете использовать ее в любом месте вашего приложения и получить доступ к тому же экземпляру секундомера.
// Declare singleton wrapper of a stopwatch, which instantiates stopwatch
// on construction
public class StopwatchProxy
{
private Stopwatch _stopwatch;
private static readonly StopwatchProxy _stopwatchProxy = new StopwatchProxy();
private StopwatchProxy()
{
_stopwatch = new Stopwatch();
}
public Stopwatch Stopwatch { get { return _stopwatch; } }
public static StopwatchProxy Instance
{
get { return _stopwatchProxy; }
}
}
// Use singleton
class Foo
{
void Foo()
{
// Stopwatch instance here
StopwatchProxy.Instance.Stopwatch.Start();
}
}
class Bar
{
void Bar()
{
// Is the same instance as here
StopwatchProxy.Instance.Stopwatch.Stop();
}
}