繁体   English   中英

TargetInvocationException被抛出C#

[英]TargetInvocationException Being Thrown c#

我有一个例程,需要后台工作人员完成。 如下;

private void BatteryListFetchBackgroundWorkerRunWorkerCompleter(object sender, RunWorkerCompletedEventArgs e)
{
    this.Cursor = Cursors.Default;
    var sortedList = this.currentBatteries.Values.OrderBy(g => g, new BatteryNameComparer()); //breaks here

    this.BatteryBindingSource.DataSource = sortedList;
    if (this.batteryListBox.Items.Count > 0)
    {
        this.batteryListBox.SetSelected(0, true);
    }

    this.viewScheduleButton.Enabled = true;
    this.viewDefaultScheduleButton.Enabled = true;
    this.viewEditScheduleLimits.Enabled = true;
}

它所处的界限是;

                this.BatteryBindingSource.DataSource = sortedList;

该异常为空引用异常,它在设置数据源时发生

BatteryNameComparer的代码

 public class BatteryNameComparer : IComparer<Battery>
{
    /// <summary>
    /// Compares DDSMGroup 
    /// </summary>
    /// <param name="a">first value for comparison</param>
    /// <param name="b">second value for comparison</param>
    /// <returns>An integer indicating the compare result</returns>
    public int Compare(Battery a, Battery b)
    {
        int aId = int.Parse(a.DeviceName.Substring(BatteryOverviewControl.BatteryPrefixSubstring.Length));
        int bId = int.Parse(b.DeviceName.Substring(BatteryOverviewControl.BatteryPrefixSubstring.Length));

        return aId.CompareTo(bId);
    }
}

每当看到TargetInvocationException ,都应立即检查其InnerException属性以查找实际引​​发的异常。

http://msdn.microsoft.com/zh-CN/library/system.exception.innerexception(v=vs.110).aspx

简而言之, TargetInvocationException仅告诉您在某种调用上下文中引发了另一个异常-这几乎总是跨线程操作或通过反射进行的调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM