我知道如何使用Begin / EndExecuteNonQuery异步执行SQL服务器上的命令,但是SqlConnection类上是否有Begin / EndOpen方法?我希望这是异步的,因为有时它很慢,我不想一直阻塞一个线程。这有意义吗?
答案 0 :(得分:3)
没有BeginConnect方法,但你可以启动一个新的线程,只要它适合你就可以在后台执行。
答案 1 :(得分:1)
你可以,但它非常有用是不寻常的。数据库的稀缺资源通常与连接无关,而与查询有关。您是否怀疑您的应用程序在打开连接时是否阻止了?
答案 2 :(得分:0)
或者,为了保持相同的模式,使用您想要的方法签名创建一个委托作为异步方法,并在委托上执行BeginInvoke
/ EndInvoke
。
当然,这并不会使方法真正异步,因为在幕后还有一个等待同步方法返回的线程,但是允许你使用普通模式并且它使用来自线程池的线程来制作电话。
答案 3 :(得分:0)
我会断开整个命令的执行,而不仅仅是打开连接。 一旦线程完成,只需要小心如何处理结果。