微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Poco::DirectoryWatcher 不处理丢失的网络连接

如何解决Poco::DirectoryWatcher 不处理丢失的网络连接

使用 Poco 1.10.1 for Windows,我尝试了以下代码

try
{
   Poco::DirectoryWatcher dw( "\\test"); getch();
}
catch( const Poco::Exception& e)
{
    std::cerr << e.displayText();
}

但是如果在 DirectoryWatcher() 运行时删除了“\test”,则不会收到异常。 此外,如果“\test”驻留在映射驱动器上并且网络连接丢失并重新建立, 从那一刻起不再接收任何事件。

我也尝试通过 Poco::ErrorHandler::set() 提供我自己的错误处理程序 - 但没有任何改变。

有什么提示吗?

解决方法

DirectoryWatcher 内部抛出和处理了一些异常。您可以通过注册一个类似于itemAdded 的委托方式来通知您这些例外情况。

查看 this question 中的基本代码。

然后你可以添加一个 scanError 委托

   watcher->scanError += Poco::delegate(this,&Monitor::onScanError);

   void onScanError(const Poco::Exception& exc) {
      std::cout << "Exc: " << exc.what() << std::endl;
   }

然后您将分别收到 Poco::FileAccessDeniedExceptionPoco::PathNotFoundException 的通知。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。