【发布时间】:2012-09-27 07:07:10
【问题描述】:
我已经在我的应用程序中实现了 FileSavePicker Contract,所以当用户从邮件应用程序中选择一个附件并想要保存到我的应用程序时,就会触发 OnTargetFileRequested(FileSavePickerUI^ sender, TargetFileRequestedEventArgs^ e) 方法....
OnTargetFileRequested(FileSavePickerUI^ sender, TargetFileRequestedEventArgs^ e)
{
auto request = e->Request;
auto deferral = request->GetDeferral();
create_task(ApplicationData::Current->LocalFolder->CreateFileAsync(sender->FileName, CreationCollisionOption::GenerateUniqueName)).then([request, deferral](StorageFile^ file)
{
// Assign the resulting file to the targetFile property indicates success
request->TargetFile = file;
// Complete the deferral to let the Picker know the request is finished.
deferral->Complete();
return file;
}.then([=](StorageFile^ file)
{
//here i will upload file to my metro app
}
现在无论我创建什么文件,我都需要上传到我的 Metro 应用程序....但我面临 deferral->complete 的问题...在上传后是否需要写入 deferral->complete()文件到我的应用程序或以上 deferral->complete 声明是正确的。??...
但是当我使用 deferral->上传文件后完成时,总是有 0 字节的文件被上传...
如果我在 createFileAsync() 中使用 deferral->complete ,如上面的代码所示,则文件没有上传......请帮助我......
你能告诉我这是正确的方法吗?..
提前谢谢...
【问题讨论】:
标签: visual-c++ c++11 windows-8 microsoft-metro c++-cx