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

VisualBasic和C#即将引入异步编程语法,包括Async和Await关键字。这些关键字基于.NET4.0的任务并行库,旨在简化异步操作的编写过程。通过示例展示了如何使用这些新特性重构传统的后台工作者模式。

在最近的博客文章中,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 = True\\End 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中将会听到这方面更多信息。

\

查看英文原文:Sneak Peak: Asynchronous Syntax for Visual Basic and C#

\

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

内容概要:本文详细介绍了一种基于Simulink的表贴式永磁同步电机(SPMSM)有限控制集模型预测电流控制(FCS-MPCC)仿真系统。通过构建PMSM数学模型、坐标变换、MPC控制器、SVPWM调制等模块,实现了对电机定子电流的高精度跟踪控制,具备快速动态响应和低稳态误差的特点。文中提供了完整的仿真建模步骤、关键参数设置、核心MATLAB函数代码及仿真结果分析,涵盖转速、电流、转矩和三相电流波形,验证了MPC控制策略在动态性能、稳态精度和抗负载扰动方面的优越性,并提出了参数自整定、加权代价函数、模型预测转矩控制和弱磁扩速等优化方向。; 适合人群:自动化、电气工程及其相关专业本科生、研究生,以及从事电机控制算法研究仿真的工程技术人员;具备一定的电机原理、自动控制理论和Simulink仿真基础者更佳; 使用场景及目标:①用于永磁同步电机模型预测控制的教学演示、课程设计或毕业设计项目;②作为电机先进控制算法(如MPC、MPTC)的仿真验证平台;③支撑科研中对控制性能优化(如动态响应、抗干扰能力)的研究需求; 阅读建议:建议读者结合Simulink环境动手搭建模型,深入理解各模块间的信号流向控制逻辑,重点掌握预测模型构建、代价函数设计开关状态选择机制,并可通过修改电机参数或控制策略进行拓展实验,以增强实践创新能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值