"An operation is already in progress" 在 DataAdaper.Fill

"An operation is already in progress" on DataAdaper.Fill

我正在尝试使用 .Net 4.5、Npgsql 3.1.6 NuGet 包的 Postgres Plus 9.5。 我已经阅读了有关此错误的内容,但我不明白为什么会出现此错误。一切都被处理掉了。这是代码:

public override DataTable getActListData(int FunkNr)
{
  using (var cmd = new NpgsqlCommand())
  {
    cmd.CommandText = npgsqlCommand3.CommandText;
    cmd.Connection = this.npgsqlConnection;
    cmd.Parameters.Add(new Npgsql.NpgsqlParameter("ANWENDUNG", NpgsqlTypes.NpgsqlDbType.Numeric));
    cmd.Parameters.Add(new Npgsql.NpgsqlParameter("XFUNKNR", NpgsqlTypes.NpgsqlDbType.Numeric));


    using (var da = new NpgsqlDataAdapter(npgsqlCommand3))
    {
      var tab = new DataTable();
      da.SelectCommand.Parameters["ANWENDUNG"].Value = getAnwendung();
      da.SelectCommand.Parameters["XFUNKNR"].Value = FunkNr;
      da.Fill(tab);  // Here is the error on the 5th call
      return tab;
    }
  }
}

这个问题是来自 Npgsql 还是来自 Postgres?

其他一些问题:

我在这里读到,延迟加载是不可能的,但我不明白是因为 Npgsql 还是来自 Postgres?

是否可以在 Postgres 中打开多个游标并在同一连接中按需读取?

编辑:更改了代码:

  using (var npgsqlConnection = new NpgsqlConnection())
  {
    ConnectionString = string.Format(DataClientFactory.DataBaseConnectString, DB, User, PW);
    npgsqlConnection.ConnectionString = ConnectionString;
    npgsqlConnection.Open();
    ....
    the code above here
    ....
 }

同一个调用出现同样的错误。错误:

System.InvalidOperationException occurred
  HResult=-2146233079
  Message=An operation is already in progress.
  Source=Npgsql
  StackTrace:
       bei Npgsql.NpgsqlConnector.StartUserAction(ConnectorState newState)
  InnerException: 

如果您发布的代码片段在同一个连接上同时运行,那就是您的问题 - Npgsql 连接不是线程安全的,并且不可能同时打开多个阅读器 (MARS)。