预览:Visual Basic与C#中的异步语法

  在最近的博客文章中,Visual Basic团队发布了一条简单的消息,声称在Visual Basic和C#中将会增加异步编程语法。两种语言新增的Async和Await关键字的实现将基于.NET 4.0中的任务并行库(Task Parallel Library,TPL)。

  Async关键字用于方法,它将启用方法的异步行为。在这个方法中,Await关键字将暂停当前的执行流程,直到当前异步行为结束为止。线程不会因此而暂停,它可以用于处理其他工作,例如UI事件。一旦异步行为结束后,方法的将继续执行余下部分。

  以下是一个典型的WPF或WinForm应用程序中的“搜索”功能:

Private Sub SearchButton_Click

(ByVal sender As Object, ByVal e As RoutedEventArgs)

Handles SearchButton.Click

ProgressBar1.Visibility = Visible

SearchButton.IsEnabled = False

Dim dt As DataTable = Nothing

Dim worker As New BackgroundWorker

AddHandler worker.DoWork, Sub()

PrepareSearch()

worker.ReportProgress(50)

dt = SearchDatabase() End Sub

AddHandler worker.RunWorkerCompleted, Sub()

ResultsGrid.DataContext = dt

ProgressBar1.Visibility = Visible

SearchButton.IsEnabled = True

End Sub

AddHandler worker.ProgressChanged,

Function(a As Object, b As ProgressChangedEventArgs) _

ProgressBar1.Value = b.ProgressPercentage

worker.RunWorkerAsync()End Sub

  根据博文所写,Async VB的版本大约如下所示:

Private Async Sub SearchButton_Click

(ByVal sender As Object, ByVal e As RoutedEventArgs)

Handles SearchButton.Click

ProgressBar1.Visibility = Visible

SearchButton.IsEnabled = False

Await PrepareSearch() ProgressBar1.Value = 50

ResultsGrid.DataContext = Await SearchDatabaseAsync()

ProgressBar1.Visibility = Visible

SearchButton.IsEnabled = TrueEnd Sub

  据称,C#和VB都会享有相同的设计、关键字及单元测试。因此C#版本看上去应该是这样的:

private async void SearchButton_Click

(object sender, RoutedEventArgs e){

ProgressBar1.Visibility = Visibility.Visible;

SearchButton.IsEnabled = false;

await PrepareSearchAsync();

ProgressBar1.Value = 50;

ResultsGrid.DataContext = await SearchDatabaseAsync();

ProgressBar1.Visibility = Visibility.Visible;

SearchButton.IsEnabled = true;}

  在这些示例中,Async版本会返回一个Task对象。Await关键字后面的代码会形成一个回调函数,在Task完毕后执行。这里您可能想到CCR类库使用C#的“yield return”来创建continuation的做法。这不是巧合,事实上“await”重用了许多“yield return”代码。于是,VB团队也趁此机会,终于完成了它们的迭代器功能。

  我们相信在PDC中将会听到这方面更多信息。

  译者注:PDC微软最高级的专业技术人员会议。前几天在PDC 2010会议上,Anders Hejlsberg发表了一场名为“C#与Visual Basic的未来”的演说,谈论了未来C#和VB中最为重要的两个特性:“异步(Async)”及“编译器即服务(Compiler as a Service)”。国内社区的老赵对这场演讲进行了详细的总结,目前已经完成了关于异步编程的部分。

  [英文出处]:Sneak Peak: Asynchronous Syntax for Visual Basic and C#

时间: 2024-09-23 00:15:39

预览:Visual Basic与C#中的异步语法的相关文章

一起谈.NET技术,预览:Visual Basic与C#中的异步语法

在最近的博客文章中,Visual Basic团队发布了一条简单的消息,声称在Visual Basic和C#中将会增加异步编程语法.两种语言新增的Async和Await关键字的实现将基于.NET 4.0中的任务并行库(Task Parallel Library,TPL). Async关键字用于方法,它将启用方法的异步行为.在这个方法中,Await关键字将暂停当前的执行流程,直到当前异步行为结束为止.线程不会因此而暂停,它可以用于处理其他工作,例如UI事件.一旦异步行为结束后,方法的将继续执行余下部

jsp实现本地图片预览并保存至数据库中

问题描述 jsp实现本地图片预览并保存至数据库中 预览本地图片,并把图片保存至数据库,如何实现 (是直接获取图片信息保存至数据库好还是将图片上传至服务器再将路径保存到数据库 中更好) 解决方案 参考:http://blog.csdn.net/gulijiang2008/article/details/10252219http://blog.csdn.net/dracowk/article/details/6920746 大量的图片还是直接存文件系统更好.

Win10预览版ISO镜像文件中怎么添加中文语言包

需要的材料: 1. 英文Win10预览版英文原版ISO镜像: 2. 要集成的中文语言包: 3. ISO打包软件,可用软碟通: 4. 可处理wim映像文件的dism工具.Win8以上版本都已包含,建议在Windows10预览版中操作. 制作步骤: 1. 解压或提取ISO镜像中的sources\install.wim文件 这里假设wim文件路径为:E:\sources\install.wim 2. 挂载wim文件中的第一个映像. 新建挂载目标位置,比如E:\mount.以管理员身份运行CMD,输入以

Visual Basic 9不完全入门之语法增强

为什么增强? 由于 .Net Framework 3.5 中许多修改与扩展触及 .Net Framework 2.0 中的已有类(如 LINQ),但又要保证向下兼容,所以微软的设计团队对现有 Visual Basic 语法作出了一些增强.与语法糖一样,它们也是编译时由编译器负责完成的. 增强了什么? ·扩展方法 ·松弛委托 ·怎么使用它? 实际上,这一组功能主要面对的是类库设计人员. 1. 扩展方法 扩展方法用于对已有 CLR 类库或是其他类库中的方法进行扩展,事实上也是"语法糖"的一

Visual Basic 9不完全入门之语法糖

引言 在Visual Basic 9 Beta 1中,有着LINQ这样重量级的增强,也有着一些"微不足道的"语法糖.这些语法糖并不影响最终编译出的IL,但足以减轻程序员们的工作量,实现更高效,更轻松的开发. 语法糖有哪些? 1.局部变量类型推测 2.数组初始化器 3.对象初始化器 语法糖好吃吗? 个人认为,这些语法糖还是比较美味的.对象初始化器就很不错:局部变量类型推测也相当好用. 语法糖怎么吃? 1.局部变量类型推测 Visual Basic 9之前,只能用As语句定义一个强类型对象

Access中以文字方式保存文件名的图片如何在报表中预览?

access|文件名 以文字方式保存文件名的图片如何在报表中预览?   问题: 报表中如何预览图片? 数据库表中存放着下面几个字段,学号,姓名,性别,图片路径,如下:1002003001,张三,男,100\2003\1002003001.jpg.现在做报表,想把图片显示出来,因为图片路径为字符类型,所以显示出来的是100\2003\1002003001.jpg,怎样做能把图片显示出来?图片就在数据库所在目录下的100\2003\的文件夹下.   回答: 在报表中放置不可见的TEXTBOX,显示图

调试 ASP 中使用的 Visual Basic COM 组件

概要本分步指南介绍了如何调试(或逐步执行)在 Active Server Pages (ASP) 页中使用的 Microsoft Visual Basic (VB) 组件对象模型 (COM) 组件. 调试 ASP 页中使用的 VB COM 组件 在开始菜单中指向程序,指向 Microsoft Visual Studio 6.0,然后单击 Microsoft Visual Basic. 在 Visual Basic 中,打开您要调试的 COM 组件项目,并在希望调试的位置设置断点.为此,单击希望调

Visual Basic .NET中的语言创新

visual Visual Basic .NET中的语言创新 引言 要快速地创建企业Web应用程序,开发人员必须依靠可伸缩的.健壮的.可重用的商务逻辑.在过去的几年中,面向对象的程序设计已经成为了创建满足这些需求的系统的主要技术.使用面向对象的程序设计语言可以使得大型系统更容易理解,更容易调试,并且更新速度更快. 为了使Visual Basic开发人员从面向对象的设计中获益,简化企业Web应用程序的开发,将在Visual Basic的下一个版本 - Visual Basic .NET中支持包括实

在 Visual Basic .NET 中使用存储过程(1)

visual|存储过程 在 Visual Basic .NET 中使用存储过程 Billy Hollis 2002年9月14日 从 MSDN Code Center 下载 StoredProcVB.NET.exe 示例文件(英文).(http://msdn.microsoft.com/code/default.asp?url=/code/sample.asp?url=/msdn-files/026/002/872/msdncompositedoc.xml) 摘要:Billy Hollis 解释了