简单来说,Async Sub就好像是在 子线程 运行的Sub,比较适合那种需要时间的代码。在Async Sub里,所有的代码都不会等 执行 完了才继续,除非你加上Await在代码的前面。
拿个代码做例子:
Async Sub AsyncTest()
Txtblock1.Text = “现在延时3秒”
Threading.Tasks.Task.Delay(3000) ‘延时3秒
Txtblock1.Text = “延时完成”
End Sub
当你输入以上代码,你会发现VS2013会给你一个警告:
This async method lacks 'Await' operators and so will
run synchronously. Consider using the 'Await' operator to await non-blocking
API calls, or 'Await Task.Run(...)' to do CPU-bound work on a background
thread.
其实你可以把这个警告看成:要注意哦,你的Async方法里没有Await哦,所有的代码都不会等待的哦。也就是说,你的延时代码也将无效哦~
如果你坚持不信,并编译运行,你会发现,你的 延时代码 真的没有效了,直接出现“延时完成”。
那么,要如何解决呢?很简单,在Threading那行的最前端加个Await就行了~
代码将会变成:
Async Sub AsyncTest()
Txtblock1.Text = “现在延时3秒”
Await Threading.Tasks.Task.Delay(3000) ‘延时3秒
Txtblock1.Text = “延时完成”
End Sub
再次运行,你会发现你的 延时代码 有效了!而且,不会导致整个程序hang掉!这就是使用Async的好处!
No comments:
Post a Comment
你对此有何看法?