C# 显示加载WPF DataGrid的实际进度,而不是.IsIndeterminate

C# 显示加载WPF DataGrid的实际进度,而不是.IsIndeterminate,c#,datagrid,progress-bar,C#,Datagrid,Progress Bar,我已设法将ProgressBar加入我的WPF表格。但是,我目前的技能仍然停留在使用: ProgressBar.IsIndeterminate = true; DataGrid1.ItemsSource = await GetDataAsync(); ProgressBar.IsIndeterminate = false; 有没有专业人士准备好描述如何让ProgressBar显示实际加载进度 这是我的全部代码: private async void Button_Click_1(o

我已设法将ProgressBar加入我的WPF表格。但是,我目前的技能仍然停留在使用:

ProgressBar.IsIndeterminate = true;

DataGrid1.ItemsSource = await GetDataAsync();

ProgressBar.IsIndeterminate = false;
有没有专业人士准备好描述如何让ProgressBar显示实际加载进度

这是我的全部代码:

    private async void Button_Click_1(object sender, RoutedEventArgs e)
    {
        try
        {
            ProgressBar.IsIndeterminate = true;

            DataGrid1.ItemsSource = await GetDataAsync();

            ProgressBar.IsIndeterminate = false;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    private Task<DataView> GetDataAsync()
    {
        return Task.Run(() =>
        {

            string connectionStringDE = "Driver={Pervasive ODBC Client Interface};ServerName=DE875;dbq=@DEDBFS;Uid=DEUsername;Pwd=DEPassword;";
            string queryStringDE = "select NRO,NAME,NAMEA,NAMEB,ADDRESS,POSTA,POSTN,POSTADR,COMPANYN,COUNTRY,ID,ACTIVE from COMPANY";
            string connectionStringFR = "Driver={Pervasive ODBC Client Interface};ServerName=FR875;dbq=@FRDBFS;Uid=FRUsername;Pwd=FRPassword;";
            string queryStringFR = "select NRO,NAME,NAMEA,NAMEB,ADDRESS,POSTA,POSTN,POSTADR,COMPANYN,COUNTRY,ID,ACTIVE from COMPANY";

            DataTable dataTable = new DataTable("COMPANY");
            // using-statement will cleanly close and dispose unmanaged resources i.e. IDisposable instances
            using (OdbcConnection dbConnectionDE = new OdbcConnection(connectionStringDE))
            {
                dbConnectionDE.Open();
                OdbcDataAdapter dadapterDE = new OdbcDataAdapter();
                dadapterDE.SelectCommand = new OdbcCommand(queryStringDE, dbConnectionDE);

                dadapterDE.Fill(dataTable);

            }
            using (OdbcConnection dbConnectionFR = new OdbcConnection(connectionStringFR))
            {
                dbConnectionFR.Open();
                OdbcDataAdapter dadapterFR = new OdbcDataAdapter();
                dadapterFR.SelectCommand = new OdbcCommand(queryStringFR, dbConnectionFR);

                var newTable = new DataTable("COMPANY");
                dadapterFR.Fill(newTable);

                dataTable.Merge(newTable);

            }

            return dataTable.DefaultView;
        });
    }
private async void按钮\u单击\u 1(对象发送方,RoutedEventArgs e)
{
尝试
{
ProgressBar.IsIndeterminate=true;
DataGrid1.ItemsSource=等待GetDataAsync();
ProgressBar.IsIndeterminate=false;
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}
}
私有任务GetDataAsync()
{
返回任务。运行(()=>
{
string connectionStringDE=“Driver={普及ODBC客户端接口};ServerName=DE875;dbq=@DEDBFS;Uid=DEUsername;Pwd=DEPassword;”;
string queryStringDE=“选择NRO、名称、名称A、名称B、地址、邮政、邮政N、邮政DR、公司YN、国家/地区、ID、公司活动”;
string connectionStringFR=“Driver={普及ODBC客户端接口};ServerName=FR875;dbq=@frdbbs;Uid=FRUsername;Pwd=FRPassword;”;
string queryStringFR=“选择NRO、名称、名称A、名称B、地址、邮政、邮政N、邮政DR、公司YN、国家/地区、ID、公司活动”;
DataTable=新的DataTable(“公司”);
//语句将干净地关闭和处置非托管资源,即IDisposable实例
使用(OdbcConnection dbConnectionDE=新的OdbcConnection(connectionStringDE))
{
dbConnectionDE.Open();
OdbcDataAdapter dadapterDE=新的OdbcDataAdapter();
dadapterDE.SelectCommand=新的OdbcCommand(queryStringDE,dbConnectionDE);
数据填充(数据表);
}
正在使用(OdbcConnection dbConnectionFR=新的OdbcConnection(connectionStringFR))
{
dbConnectionFR.Open();
OdbcDataAdapter dadapterFR=新的OdbcDataAdapter();
dadapterFR.SelectCommand=newodbcCommand(queryStringFR,dbConnectionFR);
var newTable=新数据表(“公司”);
dadapterFR.填充(新表);
dataTable.Merge(newTable);
}
返回dataTable.DefaultView;
});
}

除非您知道实际流程,否则无法显示实际流程,除非您正在使用的API实际向您报告当前进度

OdbcCommand
API没有,因此您应该坚持使用不确定的进度条