连接到SQL Server而不冻结WPF

时间:2018-04-08 09:00:53

标签: c# sql-server wpf

private async void Button_Click(object sender, RoutedEventArgs e)
{
    var sampleMessageDialog = new SampleMessageDialog
            {
                Message = { Text = "Failed to connect" }
            };

    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionS"].ConnectionString);

    try
    {
        con.Open();
        //  await DialogHost.Show(sampleMessageDialog, "RootDialog");
        con.Close();
    }
    catch (Exception ex)
    {
        await DialogHost.Show(sampleMessageDialog, "RootDialog");
    }
}

凭据正确时,一切似乎都能顺利运行。但是,当我输入错误的SQL Server连接字符串凭据时,它似乎冻结了第二个我单击按钮,对话框仅在冻结后显示。

2 个答案:

答案 0 :(得分:0)

我不知道连接异步的方法,但您可以设置连接超时。

SqlConnection.ConnectionTimeout Property

在DialogHost.Show上没有看到等待的目的。

答案 1 :(得分:0)

当您尝试在提供错误凭据时打开连接时,会出现更长的线程块。尝试使用await con.OpenAsync();来释放UI线程。