diff options
author | Miguel Costa <miguel.costa@qt.io> | 2021-05-27 09:31:27 +0200 |
---|---|---|
committer | Miguel Costa <miguel.costa@qt.io> | 2021-06-02 09:03:42 +0000 |
commit | c28f872fbeb06b35010d859cbc0dbaa46b147fde (patch) | |
tree | 0f529ee23471d81b35b657222092130678c1b057 /src | |
parent | c27c8f52f5b20407994fedf606e170765c3b6454 (diff) |
Add ConcurrentStopwatch class
Added a thread-safe version of the Stopwatch .NET class.
Change-Id: Ia167e38ed126ef11625fab0fe8df7fd6308e08a0
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/qtvstools/Common/ConcurrentStopwatch.cs | 61 | ||||
-rw-r--r-- | src/qtvstools/QtVsTools.csproj | 1 |
2 files changed, 62 insertions, 0 deletions
diff --git a/src/qtvstools/Common/ConcurrentStopwatch.cs b/src/qtvstools/Common/ConcurrentStopwatch.cs new file mode 100644 index 00000000..fa444cc9 --- /dev/null +++ b/src/qtvstools/Common/ConcurrentStopwatch.cs @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt VS Tools. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +using System; +using System.Diagnostics; + +namespace QtVsTools +{ + public class ConcurrentStopwatch : Concurrent<ConcurrentStopwatch> + { + Stopwatch Stopwatch { get; set; } + + public ConcurrentStopwatch() + { + Stopwatch = new Stopwatch(); + } + + public static ConcurrentStopwatch StartNew() + { + ConcurrentStopwatch s = new ConcurrentStopwatch(); + s.Start(); + return s; + } + + public static long Frequency => Stopwatch.Frequency; + public static bool IsHighResolution => Stopwatch.IsHighResolution; + public bool IsRunning => ThreadSafe(() => Stopwatch.IsRunning); + public TimeSpan Elapsed => ThreadSafe(() => Stopwatch.Elapsed); + public long ElapsedMilliseconds => ThreadSafe(() => Stopwatch.ElapsedMilliseconds); + public long ElapsedTicks => ThreadSafe(() => Stopwatch.ElapsedTicks); + public void Reset() => ThreadSafe(() => Stopwatch.Reset()); + public void Restart() => ThreadSafe(() => Stopwatch.Restart()); + public void Start() => ThreadSafe(() => Stopwatch.Start()); + public void Stop() => ThreadSafe(() => Stopwatch.Stop()); + } +} diff --git a/src/qtvstools/QtVsTools.csproj b/src/qtvstools/QtVsTools.csproj index 61ee5a2f..5a68fc43 100644 --- a/src/qtvstools/QtVsTools.csproj +++ b/src/qtvstools/QtVsTools.csproj @@ -59,6 +59,7 @@ </Compile> <Compile Include="ChangeFor.cs" /> <Compile Include="Common\Concurrent.cs" /> + <Compile Include="Common\ConcurrentStopwatch.cs" /> <Compile Include="Common\Disposable.cs" /> <Compile Include="Common\NativeAPI.cs" /> <Compile Include="Common\Prototyped.cs" /> |