异步填充数据集

2024-06-20

下面的方法用于填充数据集。

如果我们以同步方式调用这个方法,它就可以正常工作。

但现在我们需要以异步方式调用这个方法。那么我需要做哪些更改才能使下面的方法正常工作而不会出现任何问题。

public DataSet Filldata(string ProcName, string TableName)
{
    DataSet ds = new DataSet();
    try
    {
        da = new SqlDataAdapter(ProcName, con);
        if (con.State != ConnectionState.Open)
        {
            con.Open();
        }
        da.SelectCommand.CommandTimeout = 15000;
        da.Fill(ds, TableName);
    }
    catch (Exception ex)
    {
        ErrorMsg = ex.Message.ToString();
        HMISLogger.logger.Error(ex.Message.ToString() + " " + ProcName, ex);
    }
    finally
    {
        con.Close();
        da.Dispose();
    }
    return ds;
}

你可以这样做:

DataSet ds = await Task.Run(() => FillData(spName, tableName)); 

但该语句必须位于某个异步函数内,即:

public async Task<DataSet> GetDataSetAsync() {
      ..... 
   } 

所以最终结果看起来像这样:

public async Task<DataSet> GetDataSetAsync() {
    DataSet ds = await Task.Run(() => FillData(spName, tableName)); 
    return ds;
} 

这就是包装器,它只为您提供想法。但你可能不应该这样做。我会将 Task.Run 放在调用 SqlDataAdapter .Fill 的最低级别中

这在 .NetFrameWork WebAPI 中不起作用,但只要您引用 NuGet 包 System.Data.SqlClient 4.6.0,它就可以在 .Net Core WebAPI 和 Core 或常规 .Net Console 程序中工作。在.Net Framework WebAPI(非核心)中,await似乎在不同的线程中返回DataSet,因为进程在await语句处消失了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步填充数据集 的相关文章

随机推荐

  • sqlite 列名称引用(功能或错误)

    我遇到了一些对我来说看起来很奇怪的东西 但可能是我滥用了 sqlite3 create table t v 0 text insert into t values aa select from t v aa pragma table inf
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 数据类型变体之间的转换

    假设我想创建一种数据类型的两种变体 一种具有特定的构造函数 另一种没有它 否则它们是相同的 我想出了这个 LANGUAGE KindSignatures LANGUAGE DataKinds LANGUAGE GADTs data Foo
  • PySpark 使用统计信息写入 Parquet 二进制列(signed-min-max.enabled)

    我找到了这张 apache parquet 票https issues apache org jira browse PARQUET 686 https issues apache org jira browse PARQUET 686被标
  • 当 AutoGenerateColumns = True 时如何重命名 DataGrid 列?

    我有一个简单的数据结构类 public class Client public String name set get public String claim number set get 我正在将其喂入DataGrid this data
  • 如何在 Mac OSX Mavericks 中正确运行字符串工具?

    如何在 Mac OSX Mavericks 中正确运行字符串工具 我尝试按照我在网上找到的示例来运行它 strings a UserParser class 但我收到此错误 错误 Applications Xcode app Content
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 无法在 Sqlite3 中添加默认值为 NULL 的 NOT NULL 列

    尝试将 NOT NULL 列添加到现有表时出现以下错误 为什么会发生这种情况 我尝试了 rake db reset 认为现有记录是问题所在 但即使重置数据库后 问题仍然存在 你能帮我解决这个问题吗 迁移文件 class AddDivisio
  • 用于优化的编译器提示和语义[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我花了几周时间优化数值算法 通过预计算 内存对齐 编译器提示和标志以及反复试验的组合 我将运行时间缩短了一个数量级 我尚未使用内在函数
  • django-rest-framework:未知命令:“generateschema”

    根据命令执行文档 https www django rest framework org api guide schemas quickstart python exe manage py generateschema gt schema
  • 邮件合并到word中

    创建标签的最佳方法是使用现有的行业标准工具 例如 Microsoft Word 您如何执行此操作并设置运输标签 我不确定如何将合并字段映射到数据网格视图列 这是我到目前为止的代码 Create a new empty document Do
  • 如何恢复tensorflow inceptions检查点文件(ckpt)?

    I have inception resnet v2 2016 08 30 ckpt文件是预先训练的初始模型 我想使用恢复这个模型 saver restore sess ckpt filename 但为此 我将需要编写训练该模型时使用的变量
  • 自定义首选项中的android首选项水平分隔线?

    我创建了自己的自定义首选项对象来扩展首选项 我创建它们只是因为这些自定义数据类型没有首选项 一切正常 但我的自定义首选项没有相同的外观 因为它们缺少系统首选项对象具有的水平分隔线 我已经查找了创建水平分隔线的代码 但我找不到它是在哪里完成的
  • 如何将 NODE_EXTRA_CA_CERTS 的值传递给使用 Serverless 部署的 AWS Lambda?

    我正在部署一个节点AWS Lambda https aws amazon com lambda with 无服务器 https github com serverless serverless 由于运行此代码的机构的内部要求 我需要通过额外
  • Spark-submit,客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS];

    我使用 kerberos 设置了 hadoop 集群 但是当我运行 Spark Submit 时 它抛出异常 17 10 19 08 46 53 WARN scheduler TaskSetManager Lost task 0 0 in
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • 每 3 秒重复一次动画

    我正在使用 WOW js 和 animate css 现在我正在将 CSS 运行到 Infinite 我想知道如何让我的课程运行 3 秒停止并再次开始到无限 My html img src images fork png class for
  • 如何在 Swift 中从 UIColor 获取 RGB 代码(INT)[重复]

    这个问题在这里已经有答案了 我想在 Swift 中获取 UIColor 的 RGB 值 let swiftColor UIColor red 1 green 165 255 blue 0 alpha 1 println RGB Value
  • 检查二维数组中是否存在任何数字的程序

    我知道如何检查数组中是否存在数字 但不知道如何检查数字是否存在于数组中2D array 请帮我2D include
  • 异步填充数据集

    下面的方法用于填充数据集 如果我们以同步方式调用这个方法 它就可以正常工作 但现在我们需要以异步方式调用这个方法 那么我需要做哪些更改才能使下面的方法正常工作而不会出现任何问题 public DataSet Filldata string