C++ 尝试在Windows C++;应用

C++ 尝试在Windows C++;应用,c++,asynchronous,C++,Asynchronous,我似乎不明白为什么这行不通。我已经搜索了无数次,没有看到下面的示例如何不启动异步操作 void Folder::NewFileAction() { if (Folder::Match) { LOG(LOG_INFO) << "New file detected. Compressing"; auto Compress = async(launch::async, &ZipFile, Folder::FilePath);

我似乎不明白为什么这行不通。我已经搜索了无数次,没有看到下面的示例如何不启动异步操作

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

LOG(LOG_INFO)
std::async
返回一个
std::future
对象。由于
Compress
是本地对象(类型为
std::future
),将超出范围。因为这是保存
async
返回结果的唯一对象,析构函数将继续等待。您应该保留此类对象在该类的成员中(a
vector
可能是)。

您如何确定它没有启动异步操作?它正在继续阻止调用NewFileAction()的方法的执行。多个文件将同时进入,但在压缩完成之前不会得到处理。这可能是因为
Compress
超出范围。请阅读
std::future
的文档。因此,我是否应该使用向量跟踪对象,并将其添加为类本身的成员?