我得到了一个带有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;
}
}
想知道为什么会这样?