方法从按钮触发器运行,但不是从Postgres触发器运行

时间:2018-07-07 12:09:28

标签: c# postgresql npgsql

我的程序从PostgreSQL数据库中引入数据,并将其显示在数据网格查看器中,有一个按钮可以重新运行获取数据的方法(GetDate();)。但是,当我对带有NPGSQL的PostgreSQL数据触发器使用相同的方法时,程序崩溃。我不明白为什么在这里而不是在按钮触发器中这样做。

此方法在加载时使用。

#container {
  display: flex;
  flex-wrap: wrap;
}

.box {
  width: 50%;
  background: red;
}

@media(max-width: 300px) {
  .box {
    width: 100%;
  }
}

然后我使用按钮触发器重新运行该方法

<div id="container">
  <div class="box"> 1 </div>
  <div class="box"> 2 </div>
  <div class="box"> 3 </div>
  <div class="box"> 4 </div>
</div>

这很好。

private void GetData()
    {
        // PostgeSQL-style connection string
        string connstring = "Server=tsimain;Port=5432;Database=netdb;UserId=postgres;Password=password;";
        NpgsqlConnection conn = new NpgsqlConnection(connstring);
        conn.Open();

        string sql = "/* SQL Statment */"

        NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
        ds.Reset();
        da.Fill(ds);
        dt = ds.Tables[0];
        dataGridView1.DataSource = dt;
        conn.Close();

    }

但是这没有,并显示错误:

  

System.InvalidOperationException:“跨线程操作无效:从其他线程(不是在其上创建的线程)访问的控件”。

在线:

 private void ButReload_Click(object sender, EventArgs e)
    {
        GetData();
    }

任何帮助将不胜感激

0 个答案:

没有答案