【发布时间】:2021-03-25 02:16:25
【问题描述】:
我在 .NET Framework 上有一个 Windows 桌面应用程序,用户可以与之交互。有一个“连接”按钮,用于设置 Apache Geode 客户端到 Geode 服务器的连接。
当 Geode Server 关闭时(定位器 - 只有 1 个)桌面应用程序无限期挂起,需要强制关闭。
这就是我们连接到服务器并无限期挂在最后一行的方式:
PoolFactory poolFactory = _cache.GetPoolManager()
.CreateFactory()
.SetSubscriptionEnabled(true)
.AddLocator(_host, _port);
return poolFactory.Create(_serviceName);
我想为这个方法添加一个超时时间来返回或抛出异常或任何东西。
或者,我已经将它包装在此之外的另一种计时器上以仅返回,但是当尝试再次运行上述代码(尝试再次连接应用程序)时,池仍在尝试连接。 我试图像这样摧毁它:
//destroy the pool
var poolManager = _cache.GetPoolManager();
if (poolManager != null)
{
var pool = poolManager.Find(_serviceName);
if (pool != null && pool.Destroyed == false)
pool.Destroy();
}
但随后pool.Destroy(); 挂起无限
我怎样才能有一种机制来尝试连接到 Geode 服务器,如果在 10 秒内未连接,则返回,然后离开并能够使用相同的缓存再次尝试连接?
上面的注意是尝试重复使用相同的缓存,可能将缓存设置为 null 并重新尝试会起作用,但我正在寻找更正确的方法来做到这一点。
【问题讨论】:
标签: geode