小编Jus*_*ang的帖子

等待AsyncMethod()与等待等待等待Task.Factory.StartNew <TResult>(AsyncMethod)

给出以下方法:

public async Task<MyObject> DoSomethingAsync() {
    // do some work
    await OpenSomeFileAsync();
    return new MyObject();
}
Run Code Online (Sandbox Code Playgroud)

是否有区别:

public async void SomeEventHandler(EventArgs args) {
    var myObject = await await Task.Factory.StartNew<Task<MyObject>>( DoSomethingAsync);
    // do something with myObject
}
Run Code Online (Sandbox Code Playgroud)

和:

public async void SomeEventHandler(EventArgs args) {
    var myObject = await DoSomethingAsync();
    // do something with myObject
}
Run Code Online (Sandbox Code Playgroud)

我认为DoSomethingAsync的"做一些工作"部分会在第一种情况下立即发生在新任务中,但说实话我并不完全理解Task,async和await是如何工作的,而且我很漂亮我确定我只是为自己过度复杂.

编辑:

这个问题来自于查看这个Metro示例:http: //code.msdn.microsoft.com/windowsapps/Sharing-Content-Target-App-e2689782

特别是在MainPage.xaml.cs中,他们有:

var unused = Task.Factory.StartNew(async () => { // some work... });
// unused is of type Task<TResult>
Run Code Online (Sandbox Code Playgroud)

我试图在不使用匿名异步函数的情况下重做它,我开始想知道,为什么不写一个异步方法并等待它,而不是调用StartNew并交出一个异步函数?

c# asynchronous task async-await

9
推荐指数
1
解决办法
1万
查看次数

Scala中lazy vals的范围规则是什么?

我正在阅读sbt文档,我在多项目构建一节中遇到了这个例子:

import sbt._
import Keys._

object HelloBuild extends Build {
    lazy val root = Project(id = "hello",
                            base = file(".")) aggregate(foo, bar)

    lazy val foo = Project(id = "hello-foo",
                           base = file("foo"))

    lazy val bar = Project(id = "hello-bar",
                           base = file("bar"))
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何在声明值之前引用值foo和bar?我认为它与lazy关键字有关,但是从我的阅读中,我认为lazy关键字只会延迟初始化?看来这里的值甚至在声明之前都在某种程度上,从不介意初始化......

希望有人能够解释这里发生了什么!

scope scala lazy-evaluation sbt

3
推荐指数
1
解决办法
522
查看次数

如何格式化标准 ML 打印输出?

我正在尝试在标准 ML 中格式化一些输出。我需要显示一些四舍五入到特定小数位的实际值,并且我还需要能够使用科学记数法显示一些实际值。

打印函数的签名是

val it = fn : string -> unit
Run Code Online (Sandbox Code Playgroud)

这似乎不允许使用格式化代码或任何其他参数。我也没有运气在网上找到文档。理想情况下,我希望 SML 中的 print 函数具有与 C 中的 printf 类似的功能......

formatting sml string-formatting

3
推荐指数
1
解决办法
1761
查看次数

将区分的联合案例与F#中的<和>进行比较

我正在学习F#,我正在建立一套快速的功能,比较两个扑克手并确定胜利者.

我让这个有区别的联盟代表了扑克手的类别:

type Category =
    | HighCard
    | OnePair
    | TwoPair
    | ThreeOfAKind
    | Straight
    | Flush
    | FullHouse
    | FourOfAKind
    | StraightFlush
Run Code Online (Sandbox Code Playgroud)

我使用此代码来比较类别,以确定一只手是否优于另一只手:

if playerCategory > houseCategory then Win
elif playerCategory < houseCategory then Loss
// ... More code to handle cases within the same category
Run Code Online (Sandbox Code Playgroud)

所以,例如,表达式:

let playerCategory = FullHouse
let houseCategory = HighCard
if playerCategory > houseCategory then Win
elif playerCategory < houseCategory then Loss
// ... Other code
Run Code Online (Sandbox Code Playgroud)

会有价值Win.

但是,我不明白<和>运算符如何在这里工作.(最初我有一个函数将每个案例映射到一个数值,但我意识到这没有必要.)如果我重新排列案例的顺序然后逻辑中断,所以我假设每个案例都分配了一些默认值对应于其类型内的顺序?

但我肯定会更欣赏一点......

f# discriminated-union comparison-operators

3
推荐指数
1
解决办法
540
查看次数

如何在Metro应用程序中调试共享合同?

如何在Metro应用程序中调试共享合同?我已经尝试过本地和模拟器.单击我的应用程序的共享目标按钮后,弹出按钮将打开然后消失.目前,如果我从Metro启动屏幕启动应用程序而无需调试,我只能让弹出窗口保持打开状态.

c# debugging microsoft-metro windows-runtime visual-studio-2012

2
推荐指数
1
解决办法
548
查看次数