我正在练习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.Run和await流的情况下才会出现这种症状.
任何人都可以给我一些建议或建议吗?
但
Stream inStream = readStream.OpenRead()方法没有被命名为"async"
我不知道为什么我需要有目的地创建任务来执行此操作.
谢谢.
我正在使用Vector3D结构.我遇到一种情况,如果我有一个属性,如:
Vector3D MyVec {get; set;}
Run Code Online (Sandbox Code Playgroud)
如果我调用MyVec.Normalize();该MyVec值未被修改.我知道struct是值类型,getter将浅层复制一个新实例并返回它,因此该Normalize()方法将修改temp对象MyVec本身.
Vector3D结构不是类,我不能修改它.谢谢.