加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

试图让异步在Windows C应用程序中工作

发布时间:2020-12-14 04:00:28 所属栏目:Windows 来源:网络整理
导读:我似乎无法理解为什么这不起作用.我无休止地搜索,并没有看到我的示例如何不启动异步操作. void Folder::NewFileAction(){ if (Folder::Match) { LOG(LOG_INFO) "New file detected. Compressing"; auto Compress = async(launch::async,ZipFile,Folder::File
我似乎无法理解为什么这不起作用.我无休止地搜索,并没有看到我的示例如何不启动异步操作.

void Folder::NewFileAction()
{
     if (Folder::Match) 
     {
         LOG(LOG_INFO) << "New file detected. Compressing";
         auto Compress = async(launch::async,&ZipFile,Folder::FilePath);
     }
}

这不应该在另一个线程中启动异步操作吗?我必须在Visual Studio 2015中启用一个标志吗?

谢谢

解决方法

std :: async返回一个std :: future对象.由于Compress是本地对象(类型为std :: future),因此将超出范围.由于这只是持有异步返回结果的对象,因此析构函数将继续等待.您应该将此类对象保留在此类的成员中(向量< future>可能是).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读