我的程序从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();
}
任何帮助将不胜感激