【问题标题】:Is there simple mechanism to keep a property for a limited period of time in .net?是否有简单的机制可以在.net 中将属性保留一段有限的时间?
【发布时间】:2020-04-30 15:50:42
【问题描述】:

我想设置 X 分钟的属性。在那段时间之后,它应该返回 null 或过期。

C#中有什么简单的机制吗?

像这样:

  private static TimeCache<LoginData> _session;

  private void Login() {
    ...
    _session.Set(ws.Login());
  }

  private void DoStuff() {
    if (_session.Expired)
      Login()
    ...
  }

【问题讨论】:

标签: c# .net memcached


【解决方案1】:

您可以为此创建一个简单的类。

class ExpiringValue<T>
{
    protected T _value;
    protected DateTime _expiration;

    public ExpiringValue(T val, DateTime expiration)
    {
        _value = val;
        _expiration = expiration;
    }

    public T Value => _expiration < DateTime.Now ? default(T) : _value;
}

要使用它,你可以这样做:

var message = new ExpiringValue<string>("Hello world", DateTime.Now.AddSeconds(10));

Console.WriteLine("The message is set to {0}", message.Value);

【讨论】:

  • 请详细说明@GetoX
【解决方案2】:

您可以使用Timer 事件OnTimedEvent 重置您的属性,但请注意您的属性的线程安全。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多