gpt4 book ai didi

c# - 为什么没有 `DBconnection.CloseAsync()` 而有 `DBconnection.OpenAsync()` ?

转载 作者:太空宇宙 更新时间:2023-11-03 19:58:15 46 4
gpt4 key购买 nike

我正在将我们的 DAL 更改为 async DAL。

看着:

await _conn.OpenAsync().ConfigureAwait(false);

我看到有一个用于打开连接的异步方法。但是为什么没有用于关闭连接的异步方法?

  • 共享连接可能被其他人使用
  • 可能会返回连接池
  • 这是一个 I/O 操作
  • 可能延迟/耗时的操作

(以上四点我可能都错了:-))

问题

(对我而言)似乎合乎逻辑的是,应该有一个async close 连接方法。

为什么没有?

PS 我显然会在最后使用 DAPPER,但只是为了练习,我决定创建类似 DAL 的小型迷你迷你 dapper。

最佳答案

A shared connection might used by others

为什么这会使关闭它的调用花费很长时间?如果这意味着什么,在连接仍在被其他人使用的情况下,所有“关闭”意味着您不再需要它,并且不需要关闭实际的底层连接。

It is an I/O operation

不一定。正如您所说,如果它被合并/共享,那么它只是返回到池中,根本不会发生 IO。

是什么让您认为,即使正在关闭底层连接,也需要很长时间。所需要做的就是停止关注连接,可能会通过连接发送一条礼貌的消息,说你已经完成了。这不会花很长时间。您无需等待对此类消息的任何类型的响应,因此您无需等待此方法中完成的网络往返。

Possible delayed / time-consuming operation

为什么会耗费时间?如果它延迟了(例如,如果连接被合并,而当你是它的最后一个用户时你正在关闭它)这意味着它可能会在一段时间后关闭,但是你不是不需要等待

将对象标记为“不再使用”并不费时,而且在一天结束时,这就是您真正要做的事情。

关于c# - 为什么没有 `DBconnection.CloseAsync()` 而有 `DBconnection.OpenAsync()` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170297/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com