Uwp CopySync从未运行到完成

Uwp CopySync从未运行到完成,uwp,c++-cx,Uwp,C++ Cx,我正在将一个文件从U盘复制到我的应用程序中的LocalState文件夹。因为我用的是超宽带 Windows::Storage::StorageFolder^removeableDevices=Windows::Storage::KnownFolders::removeableDevices 获取USB驱动器路径等 auto copyTask = create_task(virtualFile->CopyAsync(targetFolder, outputFilenameUwp, Windo

我正在将一个文件从U盘复制到我的应用程序中的LocalState文件夹。因为我用的是超宽带

Windows::Storage::StorageFolder^removeableDevices=Windows::Storage::KnownFolders::removeableDevices

获取USB驱动器路径等

auto copyTask = create_task(virtualFile->CopyAsync(targetFolder, outputFilenameUwp, Windows::Storage::NameCollisionOption::GenerateUniqueName));
while (!copyTask.is_done())
{
    Sleep(100);
}
上面的方法运行到文件完全复制到LocalState,但任务从未完成。它只是永远留在while循环中。我可以执行变通操作来检查文件是否达到了正确的大小,然后跳出循环,但这是次优的

我做错什么了吗

提前谢谢

您可以尝试在
copyTask
上使用,并提供一个lambda,该lambda将在异步操作完成时调用

请参阅以下代码:

auto copyTask =
    create_task(file->CopyAsync(folder, "test.jpg", NameCollisionOption::GenerateUniqueName));
copyTask.then([](StorageFile^ copiedFile) { //This lambda will be invoked when the copyTask completes
    String^ name = copiedFile->Name;
    });

copyTask中lambda的输入参数。然后
是任务完成时
copyTask
操作生成的结果。有关使用任务执行异步操作的更多信息,请参阅。

事实证明,我太不耐烦了,一旦文件复制完毕,就需要进行一些内部管理。完成此操作后,将设置正确的状态。

这也不起作用。似乎存在任务状态不变的问题。。。状态检查适用于其他示例,但不适用于此示例。请告诉我您要复制的文件的大小,以及您是否已在应用程序清单文件中注册了要复制的文件类型,请参阅?您可以尝试将文件复制到另一个磁盘(如文件资源管理器中的D磁盘)中,然后使用应用程序将文件复制到D磁盘中,以便检查问题是否与U盘有关。文件大小约为10GB,我还有一个NVMe SSD,这是否与此有关。我刚刚尝试在本地文件夹之间传输:LocalState->LocalState,出现了相同的问题。。。非常奇怪,正如我所说,它适用于其他类型的任务,但复制似乎有问题。谢谢你的帮助!好的,这里有一个更新。任务确实运行到完成,但需要一段时间。复制文件后10-15秒,状态会发生变化。抱歉搞砸了,但这仍然不是像这样的事情的预期行为?如果您复制了一个大小约为10 GB的文件,则需要一段时间。花费的时间长度取决于您的机器的性能。您说过复制文件后需要10-15秒,如果将时间用于10GB文件,这是合理的。