Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应用程序使用统计_C#_Wpf - Fatal编程技术网

C# 应用程序使用统计

C# 应用程序使用统计,c#,wpf,C#,Wpf,我有一个C#/WPF应用程序,它有各种屏幕。 我需要知道每个用户在屏幕上花费了多少时间。 请问实现此功能的选项是什么 此外,我需要能够记录应用程序中发生任何崩溃时使用的最后一个屏幕的名称。 我尝试使用DispatcherUnhandledException,但无法获取发生异常的屏幕名称 谢谢你的帮助 我假设每个“屏幕”都有一个名称,所以你可以使用这样的字典: Dictionary<string, Stopwatch> screenTimes = new Dictionary<s

我有一个C#/WPF应用程序,它有各种屏幕。 我需要知道每个用户在屏幕上花费了多少时间。 请问实现此功能的选项是什么

此外,我需要能够记录应用程序中发生任何崩溃时使用的最后一个屏幕的名称。 我尝试使用DispatcherUnhandledException,但无法获取发生异常的屏幕名称

谢谢你的帮助

我假设每个“屏幕”都有一个名称,所以你可以使用这样的字典:

Dictionary<string, Stopwatch> screenTimes = new Dictionary<string, Stopwatch>();
我们向字典中添加一个新键,并为此屏幕启动一个
秒表。
现在,如果用户离开屏幕,请停止手表

if(screenTimes.ContainsKey(screenName))
{
    screenTimes[screenName].Stop();
}

如果要检索时间,可以使用
foreach
或再次使用索引器。
Stopwatch
通过
eassed
属性将经过的时间显示为
TimeSpan
。下面是完成此任务的。

编写代码。当您更改为“屏幕”(无论代码中的实际含义是什么)时,在某个地方记下时间和“屏幕”的名称。您可能需要为崩溃日志部分处理
App.dispatchernhandledexception
。谢谢。我如何知道用户是否已从屏幕A切换到屏幕B?我的意思是如何在屏幕A中捕获切换事件,以便停止秒表?我不知道您的应用程序的体系结构。
窗口的屏幕和实例是否为
if(screenTimes.ContainsKey(screenName))
{
    screenTimes[screenName].Stop();
}