file - 在 C++/CX 中处理 IAsyncOperation<StorageFile^>^ 对象

标签 file uwp c++-cx

我想在本地文件夹中创建一个文件,所以我编写了以下代码:

IAsyncOperation<StorageFile^>^ fileTask = Windows::Storage::ApplicationData::Current->LocalFolder->CreateFileAsync("example.dat");

但是我应该如何处理 fileTask 呢? 我尝试调用 GetResults 方法,但随后出现以下异常:

Ausnahme ausgelöst bei 0x00007FFD211C7788 (KernelBase.dll) in Test.exe: 0x40080201: WinRT originate error (Parameter: 0x000000008000000E, 0x0000000000000040, 0x000000C00EBFC470).
Ausnahme ausgelöst bei 0x00007FFD211C7788 in Test.exe: Microsoft C++-Ausnahme: Platform::COMException ^ bei Speicherort 0x000000C00EBFC730. HRESULT:0x8000000E Eine Methode wurde zu einem unerwarteten Zeitpunkt aufgerufen.
WinRT-Informationen: Eine Methode wurde zu einem unerwarteten Zeitpunkt aufgerufen.

接下来我尝试使用create_task:

create_task(Windows::Storage::ApplicationData::Current->LocalFolder->CreateFileAsync("example.dat")).then([this](StorageFile^ file)
{
    // irrelevant
});

异常(exception):

Ausnahme ausgelöst bei 0x00007FFD211C7788 (KernelBase.dll) in Test.exe: 0x40080201: WinRT originate error (Parameter: 0x00000000800700B7, 0x0000000000000048, 0x000000A936DFB230).
Ausnahme ausgelöst bei 0x00007FFD211C7788 (KernelBase.dll) in Test.exe: 0xE06D7363: Microsoft C++ Exception (Parameter: 0xCCCCCCCC19930520, 0x000000A936DFB830, 0x00007FFD01398AD0, 0x00007FFD012C0000).

抱歉,语言不通

我该如何解决这个问题?

最佳答案

Next I have tried to use create_task...

你的方向是正确的。建议使用task class用于异步操作。

但是文件 example.dat当您调用GetResults时可能已经在那里了。因此您将无法使用create_task(Windows::Storage::ApplicationData::Current->LocalFolder->CreateFileAsync("example.dat")).then([this](StorageFile^ file)再次创建文件。

要解决该问题,只需修改如下代码即可:

#include <ppltasks.h>
create_task(Windows::Storage::ApplicationData::Current->LocalFolder->CreateFileAsync("example.dat", CreationCollisionOption::ReplaceExisting)).then([this](StorageFile^ file)
{

});

已添加CreationCollisionOption::ReplaceExisting这样每次新文件都会替换旧文件。并且不要忘记包含 ppltask.h .

关于file - 在 C++/CX 中处理 IAsyncOperation<StorageFile^>^ 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39497873/

相关文章:

c# - 半透明背景和不透明前景wpf

asp.net-core - 引用UWP和ASP.NET 5中的类库

c++ - 在 C++/CX 中绑定(bind) IValueConverter 类时出错

python - `str` 和 `pickle` 字典值序列化方法的区别

python - 是否可以在 django 中通过 URL 查询文件?

c++ - 从纯 C 使用 Windows 运行时 API

c++ - native C++ 类和 WinRT 组件(ref 类)之间的自动映射?

c++ - UWP : WACK test failing on Windows Runtime metadata validation

php - 如何从url检查文件是否存在

python - 替换Python目录中文本文件中的值