给出以下方法:
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并交出一个异步函数?
我正在阅读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关键字只会延迟初始化?看来这里的值甚至在声明之前都在某种程度上,从不介意初始化......
希望有人能够解释这里发生了什么!
我正在尝试在标准 ML 中格式化一些输出。我需要显示一些四舍五入到特定小数位的实际值,并且我还需要能够使用科学记数法显示一些实际值。
打印函数的签名是
val it = fn : string -> unit
Run Code Online (Sandbox Code Playgroud)
这似乎不允许使用格式化代码或任何其他参数。我也没有运气在网上找到文档。理想情况下,我希望 SML 中的 print 函数具有与 C 中的 printf 类似的功能......
我正在学习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
.
但是,我不明白<和>运算符如何在这里工作.(最初我有一个函数将每个案例映射到一个数值,但我意识到这没有必要.)如果我重新排列案例的顺序然后逻辑中断,所以我假设每个案例都分配了一些默认值对应于其类型内的顺序?
但我肯定会更欣赏一点......
如何在Metro应用程序中调试共享合同?我已经尝试过本地和模拟器.单击我的应用程序的共享目标按钮后,弹出按钮将打开然后消失.目前,如果我从Metro启动屏幕启动应用程序而无需调试,我只能让弹出窗口保持打开状态.
c# debugging microsoft-metro windows-runtime visual-studio-2012
c# ×2
async-await ×1
asynchronous ×1
debugging ×1
f# ×1
formatting ×1
sbt ×1
scala ×1
scope ×1
sml ×1
task ×1