C#. Как исправить ошибку NullReferenceException? [дубликат]

221
13 июня 2018, 00:50

На данный вопрос уже ответили:

  • Получить html со страницы которая генерируется скриптом c# 1 ответ
  • Что такое NullReferenceException, и как мне исправить код? 2 ответа

Имеется код, который билдится вроде бы нормально, но как только начинается запуск падает с ошибкой -

Исключение типа "System.NullReferenceException" возникло в av.exe, но не было обработано в коде пользователя

Ошибка ссылается на:

webBrowser1.Document.Click += docCompleted;

Событию присвоен null там где оно объявляется, можно ли как то это обыграть или может по другому объявить событие? Спасибо заранее

Код:

namespace av
{
  public partial class MainForm : Form
  {
    private Excel.Application ex = new Microsoft.Office.Interop.Excel.Application();
    public static string result;
    public static string first;
    public static string second;
    public static string urlo;
    public MainForm()
    {
      InitializeComponent();
      ex.Visible = false;
      ex.Workbooks.Open(sourcetext.Text,
                        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                        Type.Missing, Type.Missing);
      LoadAndClick();   
    }
        private async void LoadAndClick()
    {
      int nach = Convert.ToInt32(strNtext.Text);
      int konech = Convert.ToInt32(strAlltext.Text);
        for (int i = nach; i <= konech; i++)
        {
            first = st1text.Text + i.ToString();
            second = st2text.Text + i.ToString();
            Excel.Worksheet newsheet = (Excel.Worksheet)ex.Worksheets.get_Item(1);
      Excel.Range rngfirst = newsheet.Range[first];
      Excel.Range rngsec = newsheet.Range[second];
            urlo = "https://yandex.ru/images/search?family=yes&text="+rngfirst.Value+"+"+rngsec.Value;
            Debug.WriteLine(urlo);
            var tcs = new TaskCompletionSource<int>();
            HtmlElementEventHandler docCompleted = null;
      result = strestext.Text + i.ToString();
                    docCompleted = (s, e) =>
                    {
                        try
                        {
                            webBrowser1.Document.Click -= docCompleted;
                            string element = webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition).GetAttribute("href");
                            Debug.WriteLine(element);
                            Regex regex = new Regex(@"img_url=(.*?)&pos=(.*?)&", RegexOptions.IgnoreCase);
                            foreach (Match match in regex.Matches(element))
                            {
                                Debug.WriteLine("Match 1: " + match.Groups[1].Value);
                                string sss = System.Uri.UnescapeDataString(match.Groups[1].Value);
                                Debug.WriteLine(s);
                                Excel.Worksheet sheet = (Excel.Worksheet)ex.Worksheets.get_Item(1);
                                Excel.Range rng3 = sheet.Range[result];
                                rng3.Value = sss;
                                int to = Convert.ToInt32(timeouttext.Text);
                                System.Threading.Thread.Sleep(to);
                                ex.Save();
                            }
                        }
                        finally
                        {
                    // отмечаем, что событие отработало. 
                    tcs.TrySetResult(0);
                        }
                    };
            webBrowser1.Navigate(urlo);
            Debug.WriteLine("Загрежно");
            webBrowser1.Document.Click += docCompleted;
            await tcs.Task; // ждем, когда событие сработает. 
       }
        ex.Workbooks.Close();
    }
  }
}
READ ALSO
Нужна ли БД для Telegram бота? [закрыт]

Нужна ли БД для Telegram бота? [закрыт]

Нужно написать Telegram бота с личным кабинетом в котором будет баланс пользователя и специально сгенерированная строка для реферальной ссылкиМожно...

211
Большая нагрузка при работе с БД

Большая нагрузка при работе с БД

Написал класс для работы с БД от SQL, однако в ходе работы создаётся дочерний процесс от SQL, который нагружает процессор на 20%, и потребляет 170 мб оперативы...

211
Обновление данных в таблице MySql

Обновление данных в таблице MySql

Помогите разобраться с ошибкой Notice: Undefined index: image в переменной $post_image и $post_image_tmp Что не так?

258