检查变量时NullReferenceException为Null

时间:2017-10-03 17:35:43

标签: c# wpf

我在WPF应用程序中得到了这个奇怪的NullReferenceExcpetion。即使我做同样的操作,我也不会每次都这样做。任何人都可以解释原因,

enter image description here

 public class AmazonUrl
 {
        public string Url { get; set; }
 }

 public partial class MainWindow : Window
 {

    public ObservableCollection<AmazonUrl> AmazonUrlList { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        DataContext = this;
        AmazonUrlList = new ObservableCollection<AmazonUrl>();
    }

    public List<string> getURLList()
    {
        List<string> urlList = new List<string>();

        for(int i = 0; i < AmazonUrlList.Count; i++)
        {
            AmazonUrl url = AmazonUrlList[i];

            if (url == null)
                continue;

            String str = url.Url.ToString().Trim();

            if (str.Length > 0)
               urlList.Add(str);
       }

       return urlList;
   }

    private void openMenuItem_Click(object sender, RoutedEventArgs e)
    {
        List<string> urlList = getURLList();//This is where exception occur

        OpenFileDialog openFileDialog = new OpenFileDialog();
        openFileDialog.Filter = "SCR File (.scr)|*.scr|All Files|*.*";

        if (openFileDialog.ShowDialog() != true){ ... }
    }

注意:添加这些行后,我对应用程序进行了大量更改,并重新编译了几次。所以这不是构建或编译的问题

编辑:我的堆栈跟踪可以从这里找到https://pastebin.com/2vyH1qah

1 个答案:

答案 0 :(得分:1)

我无法重现错误,它必须与您的收藏有关。你的收藏是什么样的? 这应该解决问题 -

public partial class MainWindow : Window
{
    private static object lockObj = new object(); //Add

...

public List<string> getURLList()
  {
     List<string> urlList = new List<string>();

     for (int i = 0; i < AmazonUrlList.Count; i++)
     {
        Amazon url = new AmazonUrl();  // Add
        url = AmazonUrlList[i];        // Update

...

private void openMenuItem_Click(object sender, RoutedEventArgs e)
  {
     lock (lockObj) // Add
     {
        List<string> urlList = getURLList(); //This is where exception occur
     }