小编use*_*477的帖子

WinRT中的DataContractSerializer

我正在练习WinRT API,但遇到一些需要你帮助的问题.

我想试试DataContractSerializer并引用这个网站:

http://winrtstoragehelper.codeplex.com/

代码:

Stream inStream = Task.Run(() => readStream.OpenRead()).Result;
Run Code Online (Sandbox Code Playgroud)

我认为应该是(bug?):

Stream inStream = await Task.Run(() => readStream.OpenRead());
Run Code Online (Sandbox Code Playgroud)

但最奇怪的是,如果我只使用:

Stream inStream = readStream.OpenRead());
Run Code Online (Sandbox Code Playgroud)

我把这个流传递给:

DataContractSerializer.WriteObject
Run Code Online (Sandbox Code Playgroud)

API将永远停滞不前.

但如果我使用:

Stream inStream = await Task.Run(() => readStream.OpenRead());
Run Code Online (Sandbox Code Playgroud)

并将此流传递给WriteObject当时它将正常工作.

我不知道为什么只有在我不使用Task.Runawait流的情况下才会出现这种症状.

任何人都可以给我一些建议或建议吗?


Stream inStream = readStream.OpenRead()方法没有被命名为"async"

我不知道为什么我需要有目的地创建任务来执行此操作.

谢谢.

c# c#-5.0 windows-runtime

6
推荐指数
1
解决办法
884
查看次数

如何在C#中返回引用?

我正在使用Vector3D结构.我遇到一种情况,如果我有一个属性,如:

Vector3D MyVec {get; set;}
Run Code Online (Sandbox Code Playgroud)

如果我调用MyVec.Normalize();MyVec值未被修改.我知道struct是值类型,getter将浅层复制一个新实例并返回它,因此该Normalize()方法将修改temp对象MyVec本身.

  1. 我该如何解决这种情况?Vector3D结构不是类,我不能修改它.
  2. 我可以在C#中返回引用吗?

谢谢.

c# c#-4.0

4
推荐指数
1
解决办法
1045
查看次数

标签 统计

c# ×2

c#-4.0 ×1

c#-5.0 ×1

windows-runtime ×1