问题遇到的现象和发生背景
只要代码中出现下面这一段代码就会编译报错
问题相关代码,请勿粘贴截图
create_task(dataReader->LoadAsync(1024 * 1024)).then([dataReader](void)
{
Buffer^ buff;
WriteOnlyArray<unsigned char>^ arry;
dataReader->ReadBytes(arry);
unsigned char* p = arry->begin();
});
运行结果及报错内容
编译时产生以下报错:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2338 incorrect parameter type for the callable object in 'then'; consider _ExpectedParameterType or task<_ExpectedParameterType> (see below) CX-UWP C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\ppltasks.h 386
我的解答思路和尝试过的方法
这段代码还在其他的create_task里面套着,但是我试过将他单独拿出来,编译报错结果一样,不清楚原因
我想要达到的结果
//那一段的完整代码时这样
create_task(Windows::Storage::FileIO::ReadBufferAsync(OpenFile)).then([](Windows::Storage::Streams::IBuffer^ buffer)
{
auto reader = Windows::Storage::Streams::DataReader::FromBuffer(buffer);
//获取文件长度
String^ length = reader->ReadString(buffer->Length);
//打开文件流
create_task(OpenFile->OpenAsync(Windows::Storage::FileAccessMode::Read)).then([](Windows::Storage::Streams::IRandomAccessStream^ stream)
{
Windows::Storage::Streams::IInputStream^ inputStream = stream->GetInputStreamAt(0);
DataReader^ dataReader = ref new Windows::Storage::Streams::DataReader(inputStream);
create_task(dataReader->LoadAsync(1024 * 1024)).then([dataReader](void)
{
Buffer^ buff;
WriteOnlyArray<unsigned char>^ arry;
dataReader->ReadBytes(arry);
unsigned char* p = arry->begin();
});
});
});