本文介绍了C ++ CX Windows RT create_task使用return vs C#Confusion的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
首先道歉,如果这不是正确的论坛,其次,如果我完全忽略了这一点。
如何在不使用静态变量的情况下实现C ++ CX中下面的C#代码示例这样简单的事情当然如果
太可怕了?
C#
var folder = awaitWindows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(" Assets");
var file = await folder.GetFileAsync(" customTile.xml");
string szCustomTileXML = await Windows.Storage.FileIO.ReadTextAsync(file);
HttpClient c = new HttpClient();
await var s = c-> GetStringAsync(new Uri(" www.bing.com"));
Border tile = XamlReader.Load(szCustomTileXML)as Border;
//获取http数据,拆分并使用'tile'设置一些TextBlocks
C ++ CX
static String ^ markup = ref new String();
返回create_task(Package :: Current-> InstalledLocation-> GetFolderAsync(" Assets"))
.then([inputMarkupFilename](StorageFolder ^ assetsFolder) - > IAsyncOperation< StorageFile ^> ^
{
return assetsFolder-> GetFileAsync(inputMarkupFilename);
}
).then([](StorageFile ^ markupStorageFile) - > IAsyncOperation< Platform :: String ^> ^
{
返回FileIO :: ReadTextAsync(markupStorageFile);
}
//).then([this,outputImageFilename,size](平台: :String ^ markupContent)
).then([this,outputImageFilename,size](Platform :: String ^ markupContent) - > Windows :: Foundation :: IAsyncOperationWithProgress< Platform :: String ^,Windows :: Web: :Http :: HttpProgress> ^
{
markup = markupContent;
HttpClient ^ hc = ref new HttpClient();
return hc-> ; GetStringAsync(ref new Uri(" www.bing.com"));
}
).t hen([this,outputImageFilename,size](Platform :: String ^ httpContent)
{
Border ^ border =(Border ^)XamlReader :: Load(markup);
//获取http数据,拆分并使用'tile'设置一些TextBlocks
//返回...
});
解决方案
Firstly apologies if this isn't the right forum and secondly if I am totally missing the point.
How do I achieve something as simple as the C# code sample below in C++ CX without using a static variable which of course if horrible?
C#
var folder = awaitWindows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Assets"); var file = await folder.GetFileAsync("customTile.xml"); string szCustomTileXML = await Windows.Storage.FileIO.ReadTextAsync(file); HttpClient c = new HttpClient(); await var s = c->GetStringAsync(new Uri("www.bing.com")); Border tile = XamlReader.Load(szCustomTileXML) as Border; // Take http data, split it and using 'tile' set some TextBlocks
C++ CX
static String^ markup = ref new String(); return create_task(Package::Current->InstalledLocation->GetFolderAsync("Assets")) .then([inputMarkupFilename](StorageFolder^ assetsFolder) ->IAsyncOperation<StorageFile^>^ { return assetsFolder->GetFileAsync(inputMarkupFilename); } ).then([](StorageFile^ markupStorageFile) ->IAsyncOperation<Platform::String^>^ { return FileIO::ReadTextAsync(markupStorageFile); } //).then([this, outputImageFilename, size](Platform::String^ markupContent) ).then([this, outputImageFilename, size](Platform::String^ markupContent) -> Windows::Foundation::IAsyncOperationWithProgress<Platform::String^, Windows::Web::Http::HttpProgress>^ { markup = markupContent; HttpClient ^hc = ref new HttpClient(); return hc->GetStringAsync(ref new Uri("www.bing.com")); } ).then([this, outputImageFilename, size](Platform::String^ httpContent) { Border^ border = (Border^)XamlReader::Load(markup); // Take http data, split it and using 'tile' set some TextBlocks // return ... });
解决方案
这篇关于C ++ CX Windows RT create_task使用return vs C#Confusion的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!