C# 后台全局SQL连接

C# 后台全局SQL连接,c#,.net,winforms,C#,.net,Winforms,我正在尝试使用.Net 4.0创建一个小型Windows窗体应用程序 我的部分程序需要连接到数据库,但当我执行以下操作时: SqlConnection conn = new SqlConnection(connectionString); try { conn.Open(); } .... 整个程序只是挂起,直到连接完成。我想我要做的是能够在后台建立/打开这个连接。所以程序仍然会对按钮点击等做出响应 另外,如何使此单一连接在我的程序中全局可用 提前感谢。您应该解决为什么需要这么长

我正在尝试使用.Net 4.0创建一个小型Windows窗体应用程序

我的部分程序需要连接到数据库,但当我执行以下操作时:

SqlConnection conn = new SqlConnection(connectionString);

try
{
    conn.Open();
} 

....
整个程序只是挂起,直到连接完成。我想我要做的是能够在后台建立/打开这个连接。所以程序仍然会对按钮点击等做出响应

另外,如何使此单一连接在我的程序中全局可用


提前感谢。

您应该解决为什么需要这么长时间才能建立连接的问题。这听起来更像是要处理症状,即挂起应用程序

如何使此单一连接在我的程序中全局可用

这是个坏习惯。与数据库的连接应在尽可能短的时间内保持打开状态。在需要使用连接之前获取连接,然后在完成后立即关闭。由于您使用的是C#,因此可以利用
using
块为您管理一次性资源:

using (var conn = new SqlConnection(connectionString)) {
    try {
        conn.Open();
        // do things here...
    }
    catch (Exception) {
    }
}

即使您想异步打开连接,它还有什么用途?您的用户将拥有更具响应性的UI,但在建立连接之前,仍然无法在应用程序中执行任何操作。

您应该解决为什么需要这么长时间才能获得连接的问题。这听起来更像是要处理症状,即挂起应用程序

如何使此单一连接在我的程序中全局可用

这是个坏习惯。与数据库的连接应在尽可能短的时间内保持打开状态。在需要使用连接之前获取连接,然后在完成后立即关闭。由于您使用的是C#,因此可以利用
using
块为您管理一次性资源:

using (var conn = new SqlConnection(connectionString)) {
    try {
        conn.Open();
        // do things here...
    }
    catch (Exception) {
    }
}

即使您想异步打开连接,它还有什么用途?您的用户将拥有更具响应性的UI,但在建立连接之前,仍无法在应用程序中执行任何操作。

不建议您执行的操作,因为您应该尽快使用db进行操作。

不建议您执行的操作,因为您应该执行尽可能快地使用db进行操作。

通知用户您正在连接到数据库,可能使用其中一个无限进度条,并使用等待光标。通知用户您正在连接到数据库,可能使用其中一个无限进度条,并使用等待光标。