C# 区分超时和无数据情况

C# 区分超时和无数据情况,c#,.net,couchbase,nosql,C#,.net,Couchbase,Nosql,目前,在我的项目中,我面临一个问题,即在请求数据时,两种情况之间没有区别: 数据库中实际没有数据时(对于请求的参数) 发生超时时(例如VPN连接丢失时) 在这两种情况下,方法: object Get(string key) Member of Enyim.Caching.IMemcachedClient 返回空值。我想在第二种情况下捕捉一个异常或其他情况来区分这两种情况 对于SocketPool,receiveTimeout设置为{00:00:01},但即使是过期的异常也不会像我预期的

目前,在我的项目中,我面临一个问题,即在请求数据时,两种情况之间没有区别:

  • 数据库中实际没有数据时(对于请求的参数)
  • 发生超时时(例如VPN连接丢失时)
  • 在这两种情况下,方法:

    object Get(string key)
        Member of Enyim.Caching.IMemcachedClient
    
    返回空值。我想在第二种情况下捕捉一个异常或其他情况来区分这两种情况


    对于
    SocketPool
    receiveTimeout
    设置为
    {00:00:01}
    ,但即使是过期的异常也不会像我预期的那样引发。您能建议吗?

    有两个接口是
    MemcachedClient
    实现的:
    IMemcachedClient
    IMemcachedResultsClient
    IMemcachedClient
    上的每个基本方法在另一个接口上都有一个等价的
    executexx
    方法,该方法返回更详细的结果

    你可以做:

    var result=client.ExecuteGet(key)

    结果将是一个
    IGetOperationResult
    ,您可以查询各种状态代码,或获取日志消息或其他信息


    出于您指定的原因,我倾向于选择
    ExecuteXXX()
    CAL而不是更简单的
    XXX()
    CAL,尽管使用它们可能需要更多的代码

    谢谢,这就是答案!我要补充的是,直到将CouchBase.dll更新为1.1版或更高版本,我才找到这些方法