全部连接关闭时的任务

2024-02-25

我正在尝试使用 Task.WhenAll 执行多个 SqlDataReaders。但是当任务等待时我得到

“System.InvalidOperationException:无效操作。连接 关闭了”。

创建任务:

        List<Task<SqlDataReader>> _listTasksDataReader = new List<Task<SqlDataReader>>();
        _listTasksDataReader.Add(GetSqlDataReader1(10));
        _listTasksDataReader.Add(GetSqlDataReader2(10));
        SqlDataReader[] _dataReaders = await Task.WhenAll(_listTasksDataReader);

我的“SqlDataReader”方法:

    public Task<SqlDataReader> GetSqlDataReader1(int recordCount)
    {
        using (var sqlCon = new SqlConnection(ConnectionString))
        {
            sqlCon.Open();
            using (var command = new SqlCommand("sp_GetData", sqlCon))
            {
                command.Parameters.Clear();
                command.Parameters.Add(new SqlParameter("@recordCount", recordCount));
                command.CommandType = System.Data.CommandType.StoredProcedure;
                return command.ExecuteReaderAsync();
            }
        }
    }

执行 Task.WhenAll 时不应该打开数据库连接还是我遗漏了什么?


可以将 CommandBehavior.CloseConnection 传递给 ExecuteReaderAsync。然后连接将保持打开状态,直到返回的 datareader 对象关闭:参见 MSDNhere https://msdn.microsoft.com/en-us/library/hh204867(v=vs.110).aspx and here https://msdn.microsoft.com/en-us/library/system.data.commandbehavior(v=vs.110).aspx。在这种情况下,SqlConnection 不需要位于using陈述。

像这样:

public Task<SqlDataReader> GetSqlDataReader1(int recordCount)
{
    var sqlCon = new SqlConnection(ConnectionString);
    sqlCon.Open();

    using (var command = new SqlCommand("sp_GetData", sqlCon))
    {
        command.Parameters.Clear();
        command.Parameters.Add(new SqlParameter("@recordCount", recordCount));
        command.CommandType = System.Data.CommandType.StoredProcedure;
        return command.ExecuteReaderAsync(CommandBehavior.CloseConnection);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全部连接关闭时的任务 的相关文章

  • 为什么我的 C#/pinvoke DeviceIoControl 调用返回 0 字节读取的垃圾数据?

    我有一个运行良好的非托管 C Windows 控制台应用程序 我想要它在 C 中 我已经为必要的 Kernel32 dll 符号完成了 DllImport 语句 StructLayout LayoutKind Sequential inte
  • 从 Dropbox C# 下载文件[重复]

    这个问题在这里已经有答案了 我正在尝试下载 Dropbox 中的 pdf 文件 我需要将其保存到本地计算机中 可以是任何文件夹C Users User Desktop例如 这是我一直在使用的代码 public void DownloadPd
  • 在 C++ 中,std::string::push_back() 的摊余复杂度是 O(1) 吗?

    我知道标准指定它适用于向量 但是字符串呢 是的 它是摊销常数时间 请参见第 716 页的表 101本文件的 http www open std org jtc1 sc22 wg21 docs papers 2012 n3485 pdf 表
  • 如何将异常对象序列化为 xml 字符串

    我想要类似的东西 try code here catch Exception ex stringXML Exception toXML 这样 stringXML 的值就是
  • 无法在表适配器配置属性中找到对象“Web.config”的连接“MyConnName”

    I want to change the query in table adapter but it s not opening throwing an error Configure table Adapter Failed in pro
  • 为什么在 OpenCV 中访问该矩阵时出现内存错误?

    我只是想写入给定大小的矩阵 当我在 Valgrind 中运行该程序时 出现内存错误 如下所示 主要 cpp include
  • MSVC10 /MP 在项目中跨文件夹构建非多核

    我希望有人指出我们所遇到的错误或解决方法 使用 MP 编译项目时 似乎仅同时编译同一文件夹中的文件 我使用进程资源管理器来滑动命令行并确认行为 项目过滤器似乎对同时编译的内容没有影响 项目结构disk Folder project vcxp
  • 使用 pthread_cond_signal 优雅地终止线程被证明是有问题的

    我需要发射一堆线程 并希望优雅地将它们拉下来 我正在尝试使用pthread cond signal pthread cond wait实现这一目标 但遇到了问题 这是我的代码 首先是thread main static void thrma
  • 通过 EUSART PIC18F45K80 打印消息

    我正在尝试向 Docklight 发送串行消息 但始终收到空值 我正在使用带有 XC8 MPLAB X 的 PIC18F45K80 我的代码中的所有内容似乎都是正确的 但我想我错了 我该如何修复它 include
  • 我可以将特定警告视为错误吗?

    以下是我有时在学生代码中看到的模式的简化版本 bool foobar int a int b if a lt b return true 当然 真正的代码要复杂得多 Visual Studio 报告警告 C4715 并非所有控制路径都会返回
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID
  • 在 C++ 中初始化指针

    可以在声明时将指针分配给值吗 像这样的东西 int p 1000 是的 您可以在声明时初始化指向值的指针 但是您不能这样做 int p 1000 是个地址运算符 并且您不能将其应用于常量 尽管如果可以 那会很有趣 尝试使用另一个变量 int
  • C++ 中类型信息何时向后流动?

    我刚刚看了 Stephan T Lavavej 的演讲CppCon 2018关于 类模板参数推导 在哪里某个点 https youtu be H ut6j1BYU t 941他顺便说 在 C 中 类型信息几乎永远不会向后流动 我不得不说 几
  • 不可能的事情发生了!这是什么意思?

    我遇到了一个有趣的运行时错误 我认为这是某种内存泄漏 我写了以下程序 C Code include
  • 如何在Phone类库项目中添加ResourceDictionary并访问它

    我正在开发一个项目 其中我有一个引用图书馆项目的子项目 在我的库项目 电话类库 中 如何创建 ResourceDictionary xaml 其中我需要添加一些样式并在 xaml 文件和 cs 文件中使用它 我需要访问 xaml 文件中的
  • 为什么 C++20 范围不只提供管道语法?

    我知道这个问题听起来很奇怪 所以这里有一些背景信息 最近 我很失望地了解到 C 20 范围内的映射缩减并不像人们所期望的那样工作 即 const double val data transform accumulate 不起作用 你必须这样
  • 验证域用户凭据

    我需要一种方法来验证 Windows 上本机 C 的用户 密码对 输入的是用户名和密码 用户可以是 DOMAIN user 格式 基本上我需要编写一个函数 如果用户 密码是有效的本地帐户 则返回 true 第1部分 如果用户 密码在给定的域
  • 使用 QTestLib 时抑制 qDebug

    我正在向 Qt 中的项目添加单元测试 并希望使用 QTestLib 我已经设置了测试并且它们运行良好 问题是在项目中我们重写了 qDebug 以输出到我们自己的日志文件 这在运行应用程序时效果很好 问题是当我测试类时 它有时会开始记录 然后
  • 如何在您的网站中连接两个人

    有一款名为 Verbosity 的游戏 这是一款有目的的游戏 位于此链接上www gwap com 在游戏中 他们随机连接两个玩家互相玩 游戏是玩家1应该向他的搭档 玩家2 描述一个单词 而玩家2应该猜测这个单词 我正在尝试建立一个网站来执
  • C# 中的快速字符串解析

    在 C 中解析字符串最快的方法是什么 目前我只是使用字符串索引 string index 并且代码运行合理 但我忍不住认为索引访问器所做的连续范围检查必须添加一些东西 所以 我想知道我应该考虑哪些技术来增强它 这些是我最初的想法 问题 使用

随机推荐

  • 常规语言的抽引理

    我在使用泵引理检查给定语言是否规则时有点困惑 假设我们必须检查是否 L 接受偶数的语言0是否正常 我们知道它是正则的 因为我们可以为 L 构造一个 DFA 但我想用泵引理来证明这一点 现在假设我拿一个字符串w 0000 现在将字符串划分为x
  • 无法使用 Maven 从 .avsc 编译和创建 .avro 文件

    我是 Maven 新手 一直在查看教程和网络以获取有关如何从架构文件 avsc 构建 avro 的文档 基于 apache maven org 站点上的文档 我必须添加以下内容
  • 如何在C# TBB(C#代码片段)中添加用户定义的方法?

    我正在创建一个 C TBB C 代码片段 为此 我需要编写一个用户定义的方法 我尝试使用 如何在代码中访问用户定义的方法 提前致谢 请建议我一种解决此问题的方法 TOM NET API 参考提供了以下示例 log Debug Executi
  • Tensorflow/models 使用 COCO 90 类 ID,尽管 COCO 只有 80 个类别

    Tensorflows object detection 项目的标签图包含 90 个类别 尽管 COCO 只有 80 个类别 因此参数num classes在所有示例配置中设置为 90 如果我现在下载并使用COCO 2017数据集 我需要将
  • bash 中类似 zsh 的历史记录

    我真的很喜欢 zsh 的历史记录自动完成功能 也就是说 当我按下时 我会收到上一个命令 当我打字时emacs然后按向上键 我得到了我使用的最后一个 emacs 命令 当我打字时git然后按向上键 我得到了我使用的最后一个 git 命令 当我
  • alloca 函数崩溃,但 malloc 正常

    请解释一下崩溃的原因 我的第 3 方代码意外崩溃并出现 EXC BAD ACCESS static int overwrite selector struct srm target srm MARFileRemoverProgressBlo
  • 启动 SQLWorkbench/J 时出现“无法加载 Java 运行时环境”

    I get Unable to load Java Runtime Environment开始时SQLWorkbenchJ app https www sql workbench eu 我使用的是 macOS Catalina 10 15
  • 在 React JS 的回调中使用自定义钩子

    我有这个自定义钩子 const useSomething gt const displayAlert text gt alert text return displayAlert 现在我想在我的代码中的某个地方使用它 如下所示 const
  • 如何使请求绑定的数据在 Ktor 中全局可用?

    我正在 Ktor 中构建微服务 当我们在应用程序模块中工作时 Ktor 提供对call包含授权数据的对象 我的问题是我需要访问call来自服务级别类的对象 在 Spring 中 您可以通过访问SecurityContext这是全球可用的Th
  • 如何在CKeditor中添加音频标签

    我已经添加了html5audio插件并能够获取上传按钮 但如何将上传的文件发送到服务器 这是我的插件代码 id Upload hidden false filebrowser uploadButton label editor lang h
  • Bash 脚本在 Linux 中将 pdf 打印为 pdf

    这个问题可能听起来有点奇怪 但实际任务相对简单 我发誓 我使用 PDFCreator 将生成的 FDF 合并到预先存在的 PDF 中 从 Web 表单自动生成一些 PDF 我在 NitroPDF 中创建了预先存在的 PDF 此设置有效gre
  • 如何使用 Ruby 和 eventmachine 进行日志记录?

    我正在使用 Ruby 和 Eventmachine 库编写一个应用程序 我真的很喜欢非阻塞 I O 和事件驱动系统的想法 我遇到的问题是日志记录 我正在使用 Ruby 的标准记录器库 这并不是说日志记录需要永远进行 但它似乎不应该被阻止 但
  • TestNG - 将自定义属性添加到@Test注释

    我需要向现有的 Test 注释添加自定义属性 如下所示 Test description some description newAttribute some value public void testMethod unit integr
  • WordPress 从 get_the_tag_list 中排除标签

    当我使用自定义模板标签输出单个帖子标签时 如何从标签列表中排除已定义的标签名称 好吧 没有过滤器可以删除其中的术语get the tag list但在内部它要求get the terms所以你可以在那里添加过滤器 考虑这个例子 add fi
  • 无法找到或加载 Qt 平台插件“windows”

    首先 为了防止重复报告 我尝试了多种解决方案here https stackoverflow com questions 17366967 failed to load platform plugin windows available p
  • 运行时错误无法解析 GoogleMap 的所有参数:(?, ?)

    我正在尝试将基本地图加载到我的模板上 我只是按照这个说明操作https ionicframework com docs native google maps https ionicframework com docs native goog
  • htaccess 301 仅重定向根目录,但排除所有文件和子文件夹(有例外)

    我不是程序员 htaccess代码 我阅读了其他相关帖子但不明白它们 他们没有一个做我需要的事情 我有一个运行在以下位置的 WordPress 网站http example com main但想重定向http example com to
  • Renderscript 无法运行的设备列表

    我的应用程序需要 Renderscript 因为它执行一些在 Java 中需要几秒钟的图像处理 在发布之前 我已经在许多设备上测试了它 甚至是一些较旧的型号 例如 Samsung Galaxy Tab 2 API 17 并且即使在这些设备上
  • 添加新节点时,链表的浅拷贝不反映更改

    I have done a lot of readings but seems like I can t clear my confusion without asking here Based on the diagram when I
  • 全部连接关闭时的任务

    我正在尝试使用 Task WhenAll 执行多个 SqlDataReaders 但是当任务等待时我得到 System InvalidOperationException 无效操作 连接 关闭了 创建任务 List