簡體   English   中英

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)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM