코드 전체에서 특정 작업을 실행하기위한 시간 측정을 시작합니다. Stopwatch 클래스를 사용하면 작업이 완료되지만 Stopwatch는 단일 함수 또는 코드 블록 내에서 시간을 측정하는 데는 효과적이지만 응용 프로그램의 여러 지점 (여러 네임 스페이스) 간에는 시간 측정에 효과적이지 않습니다. 궁극적으로 Application Insights와 같은 실제 원격 측정 서비스를 통합 할 예정이지만, 현재로서는 시간을 원하고 로그에 기록합니다. 내 스톱워치 게터/세터C# 스레드가 여러 네임 스페이스에 걸쳐 경과 시간을 캡처하는 데 안전하고 효과적인 방법을 찾고 있습니다.
namespace MyApp.Application.Contracts.Core.References
public class StopwatchReference
{
/// <summary>
/// The Timer is used to accurately measure the elapsed milliseconds of specific tasks
/// </summary>
public Stopwatch Timer { get; set; }
}
에
내 참조 클래스는 나는 방법 A
var startTime = new StopwatchReference();
startTime.Timer.Start();
우리는 많은 다른 네임 스페이스에서 여러 방법을 통해 실행 타이밍되는 코드에서 시계를 시작합니다. 우리가 Method B라고 부를 것입니다. 타이머의 정확한 인스턴스를 정지시키는 적절한 방법은 무엇입니까? 시스템에는 동시에 많은 사용자가 같은 전화를 걸기 때문에 스레드 안전이 가장 중요합니다.
다른 방법에 대한 제안은 열려 있습니다. 미리 감사드립니다!
* 실제로 * 수행중인 작업을 알지 못해도 안전하게 수행하는 방법에 대해서는 언급 할 수 없습니다. – Servy
모든 코드를 통해 StopwatchReference에 대한 참조를 삽입 할 수 있습니다. – gobes