.NET 4 C# 콘솔 응용 프로그램이 있습니다. IBM i에서 데이터를 가져와 인터넷 SQL Server로 전송합니다. 이 끝날 때까지 그것은 완벽하게 작동, 나는 다음과 같은 오류가 발생합니다 :ObjectDisposedException 처리되지 않았습니다 : 프로그램 끝에서 안전한 핸들 닫혔습니다
System.ObjectDisposedException was unhandled Message=Safe handle has been closed Source=mscorlib ObjectName="" StackTrace: at System.Runtime.InteropServices.SafeHandle.DangerousRelease() at 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;
}
모든 방법은이 방법과 유사하게 작동합니다.
은'동기화 *'통화의 가족은 어떻게해야합니까? 코드를 볼 수 있습니까? 나는 그 WaitHandle을 유출 할 것입니다. – user7116
'WaitHandle'이 무엇인지 모르겠으므로 간접적으로 만 사용하고있을 것입니다. –
나는 그것을 IBM 드라이버까지 추적 해왔다. 나는 이것을 반영하여 내 대답을 업데이트했다. – user7116