Как я могу вернуть ответ на запрос effxdb в класс Mainwindow? - PullRequest
1 голос
/ 05 июня 2019

У меня в асинхронной задаче есть запрос к базе данных infxdb.Я пытаюсь вернуть результат в переменную класса MainWindow.Кто-нибудь может мне помочь?

public partial class MainWindow : Window
{
   public MainWindow()
  {
        InitializeComponent();
        string result= ConsultaBD().Result;
  }


  public async Task<string>  ConsultaBD()
  {
        var influxDbClient = new InfluxDbClient("http://host:8086/", "user", "pass", InfluxDbVersion.v_1_3);
        var query = "SELECT T_PV FROM TFA WHERE time >= '2019-05-21' and time < '2019-05-22' ";
        var response = await influxDbClient.Client.QueryAsync(query, "dbName");

        return (response.ToString());
   }
}

1 Ответ

1 голос
/ 05 июня 2019

Например, вы могли бы ожидать метод ConsultaBD() в обработчике событий async, который вызывается при загрузке окна:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Loaded += async (s, e) =>
        {
            string result = await ConsultaBD();
        };
    }

    public async Task<string> ConsultaBD()
    {
        var influxDbClient = new InfluxDbClient("http://host:8086/", "user", "pass", InfluxDbVersion.v_1_3);
        var query = "SELECT T_PV FROM TFA WHERE time >= '2019-05-21' and time < '2019-05-22' ";
        var response = await influxDbClient.Client.QueryAsync(query, "dbName");

        return (response.ToString());
    }
}

Вызов Result или Wait() по методу async считается плохой практикой и может привести к тупику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...