我正在修復現有 C# 項目中的一些錯誤。我使用 Visual Studio 2008 和 3.5 .NET Framework。該應用程序使用表單,并且應用程序的生命周期正常運行。我還沒有做任何改變,但是客戶最近開始經歷奇怪的行為。第一次使用該應用程序可以沒有問題,但是如果關閉一個表單并打開另一個表單,則該表單中的對象將被釋放。該代碼適用于 PDA,我們有一個用于掃描的事件處理程序。我認為這很奇怪,因為代碼沒有任何改變。也許這是一些框架錯誤?我試圖完全消除 Closing 事件上的事件處理程序,但發生了同樣的錯誤。改變表格的處理方式。表單創建 FormTEntreUbicaciones form = new FormTEntreUbicaciones(Movements.TREntreUbicaciones); form.ShowDialog(); form.Dispose();活動創建 if (Device.GetOSType2() == Device.OSType.WinMobile){ hDcd = new DecodeHandle(DecodeDeviceCap.Exists | DecodeDeviceCap.Barcode); DecodeRequest reqType = (DecodeRequest)1 | DecodeRequest.PostRecurring; dcdEvent = new DecodeEvent(hDcd, reqType, this); dcdEvent.Scanned += new DecodeScanned(dcdEvent_Scanned); }表格應該是打開的,并且其中的所有對象都不應被丟棄例外:System.ObjectDisposedException was unhandled Message="ObjectDisposedException" ObjectName="" StackTrace: at System.Windows.Forms.Control.InvokeHelper(Delegate method, Boolean fSynchronous, Object[] rgobjArgs) at System.Windows.Forms.Control.Invoke(Delegate method) at Datalogic.API.DecodeEvent.WaitForScan()有什么建議么?謝謝!
1 回答

慕桂英546537
TA貢獻1848條經驗 獲得超10個贊
最后,我找到了解決方案。
在弄清楚出了什么問題之后,我發現 SCAN 事件一直保持活動狀態。
我添加了一個關閉覆蓋:
this.Closing += MyClosedHandler;
MyClosedHandlerEvent 如下:
//FIX MA 23.07.2019
protected void MyClosedHandler(object sender, EventArgs e)
{
if (dcdEvent.IsListening)
{
dcdEvent.StopScanListener();
}
if (hDcd != null)
{
hDcd.Dispose();
}
}
檢測到 datalogic.api.dll 存在問題。使用的 PDA 是 Skorpio x3。
希望這會幫助別人!
- 1 回答
- 0 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消