2015-09-10 79 views
4

我有用C#和.NET Framework 4.0運行任務開發的Windows窗體應用程序。拋出Task.ThrowIfExceptional的異常是什麼?

我很抱歉問這個問題,但我不知道發生了什麼異常。這是堆棧跟蹤:

One or more errors occurred. 
    at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 
    at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) 
    at MyCompany.Dispositivos.Plugins.TICAnKorr.DeviceTICAnKorr.StopLive() 
    at MyCompany.Dispositivos.Plugins.TICAnKorr.VisorTICAnKorrMini.StopRemote() 
    at MyCompany.Dispositivos.InterfazDispositivos.ICBaseVisor.DesasociarDispositivo() 
    at MyCompany.Dispositivos.InterfazDispositivos.ControlMosaico.DesasociarTodosLosPaneles() 
    at MyCompany.Dispositivos.InterfazDispositivos.ControlMosaico.CrearControlSeleccionado(DeviceBase device) 
    at MyCompany.Dispositivos.InterfazDispositivos.ControlMosaico.icPanelViewer_MouseDown(Object sender, MouseEventArgs e) 
    at System.Windows.Forms.Control.OnMouseDown(MouseEventArgs e) 
    at System.Windows.Forms.UserControl.OnMouseDown(MouseEventArgs e) 
    at MyCompany.Dispositivos.InterfazDispositivos.VisorDeMosaico.mousedown(Object sender, MouseEventArgs e) 
    at System.Windows.Forms.Control.OnMouseDown(MouseEventArgs e) 
    at System.Windows.Forms.UserControl.OnMouseDown(MouseEventArgs e) 
    at MyCompany.BasicInterface.Controles_Basicos.ICLabel.lblText_MouseDown(Object sender, MouseEventArgs e) 
    at System.Windows.Forms.Control.OnMouseDown(MouseEventArgs e) 
    at System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.Label.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
Object reference not set to an instance of an object. 
    at MyCompany.Dispositivos.Plugins.TICAnKorr.VisorTICAnKorrMini.MensajeEstado() 
    at MyCompany.Dispositivos.Plugins.TICAnKorr.VisorTICAnKorrMini.m_DispositivoAsociado_NewResult(Object sender) 
    at MyCompany.Dispositivos.ConexionesDispositivos.NewResultsEventHandler.Invoke(Object sender) 
    at MyCompany.Dispositivos.ConexionesDispositivos.DeviceBase.OnNewResult() 
    at MyCompany.Dispositivos.Plugins.TICAnKorr.DeviceTICAnKorr.HiloCaptura() 
    at MyCompany.Dispositivos.ConexionesDispositivos.DeviceBase.<StartLive>b__9() 
    at System.Threading.Tasks.Task.InnerInvoke() 
    at System.Threading.Tasks.Task.Execute() 

我想拋出的異常是:

Object reference not set to an instance of an object. 
     at MyCompany.Dispositivos.Plugins.TICAnKorr.VisorTICAnKorrMini.MensajeEstado() 

什麼是真正的例外呢?

如果這是不正確的地方問這個問題,請告訴我,我刪除它。

我不是在問Object reference not set to an instance of an object.是什麼意思,我知道,我在問是否這個異常使得任務拋出System.Threading.Tasks.Task.ThrowIfExceptional

+0

你不能調試代碼? – Maarten

+0

不,我無法調試它。這是一個生產日誌。 – VansFannel

+0

以下是一個提示:將PDB部署到生產環境並記錄完整的例外ToString。這給你更多關於錯誤的信息。 – usr

回答

3

當您執行返回Task的操作時,會發生什麼情況:任何異常都會存儲在任務的Task.Exception屬性中。

當您致電Wait時,代碼將等待任務完成,然後重新拋出在內發生的任何異常。因此,在任務完成後調用ThrowIfExceptional方法來引發發生的任何異常。

這樣的問題很可能是任何代碼被執行以返回正在等待的任務的空引用。應該是裏面的東西:

MyCompany.Dispositivos.Plugins.TICAnKorr.DeviceTICAnKorr.StopLive() 
相關問題