3

我得到了一个带有DataConnectionDialog(来自Microsoft.Data.ConnectionUI)的 WPF 表单

如果它是从与 UI 相同的线程调用的,它看起来像这样:

在此处输入图像描述

代码在这里:

private void btnSetDbConnection_OnClick(object sender, RoutedEventArgs e)
{
    string connectionString = null;

    try
    {
        //await Task.Run(() => 
        //{
              DataConnectionDialog dataConnectionDialog = new DataConnectionDialog();                  Microsoft.Data.ConnectionUI.DataSource.AddStandardDataSources(dataConnectionDialog);
              dataConnectionDialog.SelectedDataSource = Microsoft.Data.ConnectionUI.DataSource.SqlDataSource;
              dataConnectionDialog.SelectedDataProvider = Microsoft.Data.ConnectionUI.DataProvider.SqlDataProvider;

              if (DataConnectionDialog.Show(dataConnectionDialog) == System.Windows.Forms.DialogResult.OK)
              {
                _dataHandler.InitializeConnection(dataConnectionDialog.ConnectionString);
              }
          //}).ConfigureAwait(false);                
      }
      catch (Exception ex)
      {
          throw ex;
      }
  }

如果没有 - 就像那样:

在此处输入图像描述

代码(嗯,它是相同的但未注释):

private async void btnSetDbConnection_OnClick(object sender, RoutedEventArgs e)
{
    string connectionString = null;

    try
    {
        await Task.Run(() =>
        {
            DataConnectionDialog dataConnectionDialog = new DataConnectionDialog();
            Microsoft.Data.ConnectionUI.DataSource.AddStandardDataSources(dataConnectionDialog);
            dataConnectionDialog.SelectedDataSource = Microsoft.Data.ConnectionUI.DataSource.SqlDataSource;
            dataConnectionDialog.SelectedDataProvider = Microsoft.Data.ConnectionUI.DataProvider.SqlDataProvider;

            if (DataConnectionDialog.Show(dataConnectionDialog) == System.Windows.Forms.DialogResult.OK)
            {
                _dataHandler.InitializeConnection(dataConnectionDialog.ConnectionString);
            }
        }).ConfigureAwait(false);
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

想知道为什么会这样?

4

0 回答 0