@IartanisI

Как сделать event в wpf асинхронным?

У меня есть такого рода код. Сама функция
static public List<string> GetData(string NameBase,string Row,string type = "0")
            List<string> data =  new List<string>();
            
            SQLiteConnection conn = new SQLiteConnection(@"Data Source=Zhur-Test.db"); ;
            conn.Open();


            
            string IdBases = "FullBases";
            string sql1 = "select Id,NameTable from ListTable where FullName = '" + NameBase + "'";
            SQLiteCommand cmd1 = new SQLiteCommand(sql1, conn);
            SQLiteDataReader reader1 = cmd1.ExecuteReader();
            while (reader1.Read())
            {
               
                IdBases = Convert.ToString(reader1["NameTable"]);
            }

            string sql = "select distinct " + Row + " from " + IdBases;





            SQLiteCommand cmd = new SQLiteCommand(sql, conn);

            SQLiteDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                if (type == "0")
                {
                    data.Add(Convert.ToString(reader[Row]));
                }
                else
                {

                    var b1 = Regex.Split(Convert.ToString(reader[Row]), ";");
                    for (int i = 0; i < b1.Length; i++)
                    {
                        data.Add(Convert.ToString(b1[i]));
                    }
                }
            }
            conn.Close();
            return data;
        }

    }

И реакция при смене значения листбокса
private void OuterListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            object item = ListJournal.SelectedItem;

            if (item == null)
            {
            }
            else
            {
                ListJournal.Text = item.ToString();
                NameVicon1.ItemsSource = Func.GetData(ListJournal.Text, "NameVicon1", "1").Distinct();
                Koresp.ItemsSource = Func.GetData(ListJournal.Text, "Koresp").Distinct();
                Resolution.ItemsSource = Func.GetData(ListJournal.Text, "Resolution").Distinct();
                KrtZmist.ItemsSource =  Func.GetData(ListJournal.Text, "KrtZmist").Distinct();
                NomerStr.ItemsSource = Func.GetData(ListJournal.Text, "NomerStr","1").Distinct();
            }
        }

Суть в том что базе нужно довольно много времени что б подгрузить данные для автозаполнение. И я хочу добавить процесс в фон. Как можно реализовать?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 3
freeExec
@freeExec
Участник OpenStreetMap
Если SQLiteCommand не умеет в асинхронные методы чтения (что очень странно), то заворачивать данную логику в Task.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы