跟踪Winform应用程序上的用户使用情况

时间:2013-11-29 06:33:15

标签: sql sql-server winforms

我们有一个Winform应用程序,要求用户使用他们的用户名和密码登录。该软件是免费的,但支持不是。支持费用将基于全职等效用户的数量,因此我们基本上需要跟踪每月使用软件的小时数。该软件使用VS 2010编写,后端使用MS SQL 2008

目前,我们有一张表格如下:

>CREATE TABLE [UserUsages](
>   [GUID] [uniqueidentifier] NOT NULL,
>   [Source] [varchar](50) NOT NULL, -- Name of the software/front end
>   [WksName] [varchar](50) NOT NULL, -- Name of the workstation 
>   [WksIP] [varchar](50) NOT NULL, -- IP of the workstation
>   [UserGUID] [uniqueidentifier] NOT NULL, -- UID of the User who logged in 
>   [TimeIn] [datetime] NOT NULL, -- Time the user logged in
>   [TimOut] [datetime] NOT NULL, -- Time the user logged out
>CONSTRAINT [pk_Usages_GUID] PRIMARY KEY CLUSTERED 
>([GUID] ASC)
>) ON [PRIMARY]

每当用户登录时,我们在此表上创建一条新记录并将时间保存到TimeIn列。当用户注销时,我们会更新TimeOut列。

这种方法的问题是,如果某个用户决定使用Windows任务管理器终止任务或系统崩溃并需要冷重启,则TimeOut不会更新。

有没有更好的办法呢?而且就表格结构而言,我们可以采取哪些措施使其更好地运作?

1 个答案:

答案 0 :(得分:0)

也许您可以在用户登录时以每分钟一次的当前时间更新TimeOut记录...这样即使系统崩溃,您也会有大约“退出”时间