【问题标题】:How to maintain session in Wpf Application between two window? [closed]如何在两个窗口之间维护 Wpf 应用程序中的会话? [关闭]
【发布时间】:2016-04-04 09:02:33
【问题描述】:

我有WPF 申请,我有一个注册窗口。 当我单击注册选项卡时,它会打开注册窗口。 我的要求是,如果点击注册标签后没有任何活动,它应该超时并移动到另一个窗口。

【问题讨论】:

  • 你能发布你到目前为止的尝试吗?
  • 好的模式是在整个应用程序中保留一个窗口。 WPF 公开 ContentControl 以便在视图之间切换。

标签: c# wpf silverlight data-binding


【解决方案1】:

我认为您需要检查窗口上的空闲时间

关于windows加载事件

 private static DispatcherTimer idleTimer;
 private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            idleTimer = new DispatcherTimer();
            idleTimer.Interval = TimeSpan.FromSeconds(5);
            idleTimer.Tick += this.OnTimerTick;
            idleTimer.Start();
        }

定时器滴答事件

private void OnTimerTick(object sender, EventArgs e)
{
    uint idleTime = this.GetIdleTime();
    if (idleTime > 5000)
    {
        this.Close();
    }
}

空闲时间助手方法

[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO dummy);


private uint GetIdleTime()
{
    LASTINPUTINFO lastUserAction = new LASTINPUTINFO();
    lastUserAction.CbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(lastUserAction);
    GetLastInputInfo(ref lastUserAction);
    return (uint)Environment.TickCount - lastUserAction.DwTime;
}   

internal struct LASTINPUTINFO
{        
    public uint CbSize;   
    public uint DwTime;   

}

【讨论】:

  • 嗨,贾斯汀,感谢您的回复,您能告诉我如何跟踪用户的上次活动吗?
  • 试图跟踪窗口上点击的按钮或类似的东西?
  • 它在 window_loaded 事件中。我想跟踪用户最近的活动。
  • 我不明白你的意思。我认为用户上次活动的意思是;如果用户点击一个按钮,或者在一个文本框中输入?
  • 其实辅助方法效果很好。它解决了我的问题。非常感谢。
【解决方案2】:

您可以将值放入Application.Current.Properties 以在应用程序中使用它。

Application.Current.Resources["ResourceName"] = "SomeData";

存储此类数据的一般策略是使用公共类 具有公共属性/字段并从任何地方访问它们 应用。但是,对于 Windows Presentation Foundation (WPF), 框架本身提供了一个应用范围的“存储包”, Application.Properties,可用于相同目的。 此包是基于应用程序域特定线程安全键值的 字典实例。

【讨论】:

  • 但它并没有解决包含定期检查用户(最后)活动的问题。
  • 首先他的问题不包含任何代码。我不能为他写完整的代码。我正在指导他从这个开始
  • 嗨,拉胡尔,感谢您的回复。你能告诉如何检查用户最后的活动吗?
猜你喜欢
  • 2013-11-28
  • 2011-09-21
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多