添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • Linux
  • Nginx
  • 数据库
  • Python
  • PHP
  • C#
  • .NET
  • WPF
  • MAUI
  • Blazor
  • WinForm
  • 帝国CMS
  • AKCMS
  • Typecho
  • 织梦CMS
  • Visual Studio
  • Windows
  • Mac
  • Web前端
  • 数据采集
  • 运营
  • 产品
  • 摩托车
  • 电影
  • 杂事
  • 访问数据库可能要花一些时间。这里不应该阻塞用户界面。ADO.NET 类 通过异步方法和同步方法提供了基于任务的异步编程。下面的代码片段类似于上一个使用 SqlDataReader 的代码,但它使用了异步的方法调用。连接用SqlConnection.OpenAsync 打开,读取器从 SqlCommand.ExecuteReaderAsync 方法中返回,记录使用SqIDataReader.ReadAsync 检索。在所有这些方法中,调用线程没有阻塞,但是可以在得到结果前,执行其他模作: .

    public static async Task Main() await ReadAsync("Wrox Press"); public static async Task ReadAsync(int productId) var connection = new SqlConnection(GetConnectionString()); string sql = "SELECT [Title], [Publisher],[ReleaseDate] " + "FROM [ProCSharp].[Books] WHERE lower([Title]) " + "Like @Title ORDER BY [ReleaseDate]"; var command = new SqlCommand(sql, connection); var titleParameter = new SqlParameter("Title", SqldbType.NVarChar, 50); titleParameter.Value = title; command.Parameters.Add(titleParameter); await connection.OpenAsync(); using (SqlDataReader reader = await command.ExecuteReaderAsync(CommandBehavior.CloseConnection)) while (await reader.ReadAsync()) int id = reader.GetInt32(0); string bookTitle = reader.GetString(1); string publisher = reader[2].ToString(); DateTime? releaseDate = reader.IsDBNull(3) ? (DateTime?)null : reader.GetDateTime(3); Console.WriteLine($"{id,5}. {bookTitle,-40} {publisher,-15} " + $"{releaseDate:d}");

    使用异步方法调用,不仅有利于 Windows 应用程序,也有利于在服务器端同时进行多个调用。ADO.NET API 的异步方法有重载版本来支持 CancellationToken,使长时间运行的方法早些停止。

    本文作者:Dotnet讲堂 信息来源: 公众号 Dotnet讲堂 所属分类: C# Power by Typecho. Theme by Puma. Written by 董川民- 独立开发者 渝ICP备16006207号-2 渝公网安备 50011202503233号

    友情链接: