引发 Task.ThrowIfExceptional 的异常是什么?
What is the exception that makes to throw a Task.ThrowIfExceptional?
我有一个 windows 使用 C# 和 .NET Framework 4.0 运行 Task 开发的表单应用程序。
很抱歉问这个问题,但我不知道异常发生在哪里。这是堆栈跟踪:
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
的异常。
当您执行一个操作 returning a Task
时会发生什么,任何异常都会存储在任务的 Task.Exception
属性.
中
当您调用 Wait
时,代码会等待任务完成,然后重新引发 AggreagtedException
中发生的任何异常。因此,在任务完成后调用 ThrowIfExceptional
方法以引发任何已发生的异常。
很可能问题是在对正在等待的任务 return 执行的任何代码中的空引用。应该是里面的东西:
MyCompany.Dispositivos.Plugins.TICAnKorr.DeviceTICAnKorr.StopLive()
这可能是因为您的 class 中的某些变量为空,并且也未被处理。我知道你说你知道这个错误,但最近我遇到了这个错误,我的解决方案是将运算符“?”在可能为空的变量中。
我有一个 windows 使用 C# 和 .NET Framework 4.0 运行 Task 开发的表单应用程序。
很抱歉问这个问题,但我不知道异常发生在哪里。这是堆栈跟踪:
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
的异常。
当您执行一个操作 returning a Task
时会发生什么,任何异常都会存储在任务的 Task.Exception
属性.
当您调用 Wait
时,代码会等待任务完成,然后重新引发 AggreagtedException
中发生的任何异常。因此,在任务完成后调用 ThrowIfExceptional
方法以引发任何已发生的异常。
很可能问题是在对正在等待的任务 return 执行的任何代码中的空引用。应该是里面的东西:
MyCompany.Dispositivos.Plugins.TICAnKorr.DeviceTICAnKorr.StopLive()
这可能是因为您的 class 中的某些变量为空,并且也未被处理。我知道你说你知道这个错误,但最近我遇到了这个错误,我的解决方案是将运算符“?”在可能为空的变量中。