У меня консольное приложение .NET 4 C #.Он извлекает данные из нашего IBM i и отправляет их на наш интернет-сервер SQL.Он прекрасно работает, пока не закончится, я получаю следующую ошибку:
System.ObjectDisposedException не обработан. Сообщение = Безопасный дескриптор закрыт.SafeHandle.DangerousRelease () в System.Threading.RegisteredWaitHandleSafe.Finalize () InnerException:
Код моей программы:
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Begin: " + DateTime.Now.ToString());
SystemCodeController sc = new SystemCodeController();
sc.SyncSystemCodes();
ParkingTicketController pt = new ParkingTicketController();
pt.SyncParkingTickets();
EmailHelper.SendSuccessEmail();
System.Console.WriteLine("End: " + DateTime.Now.ToString());
}
}
В консоли я вижу время начала ивремя окончанияТак что я знаю, что последняя строка исполняется.Что я забываю или не делаю так, как я должен быть?
Обновление : методы Sync * извлекают данные из IBM в объект, а затем используют каркас сущностей для вставки записей в базу данных.
public void SyncParkingTickets()
{
ptr.ClearTable();
ptr.InsertNewCitation(ibmI.GetAllCitations());
ptr.SaveChanges();
}
public void InsertNewCitation(IEnumerable<ParkingTicket> citations)
{
foreach (ParkingTicket citation in citations)
{
InsertNewCitation(citation);
}
}
public void InsertNewCitation(ParkingTicket citation)
{
db.AddToParkingTickets(citation);
}
public IEnumerable<ParkingTicket> GetAllCitations()
{
SystemCodeRepository scr = new SystemCodeRepository();
// Create SQL statement
DataTable dt = new DataTable();
using (iDB2Connection conn = new iDB2Connection(_connString))
{
using (iDB2Command cmd = new iDB2Command(sb.ToString(), conn))
{
conn.Open();
using (iDB2DataAdapter da = new iDB2DataAdapter(cmd)) { da.Fill(dt); }
conn.Close();
}
}
#region Fill object from DataTable
var citations = from i in dt.AsEnumerable()
select new ParkingTicket
{
// Fill object
};
#endregion
return citations;
}
Все методы работают аналогично этому.