Текстовое поле автозаполнения C # в приложении windowsforms выдает ошибку «System.AccessViolationException» - PullRequest
0 голосов
/ 22 января 2019

В настоящее время я работаю над программой для реализации функции резервного копирования.Поэтому я пытаюсь выбрать имена компьютеров через Active Directory и отображать их в виде подсказки в текстовом поле.Это также работает до сих пор, но время от времени возникает проблема, что он не показывает никаких предложений, но ошибка "System.AccessViolationException".Я также не нашел решения с помощью исследований.Я могу только представить, что он пытается прочитать список автозаполнения, пока он снова заполняется.

Надеюсь, у меня есть совет!

Большое спасибо!

 //Textbox Declaration
 this.textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
 this.textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
 this.textBox1.AutoCompleteCustomSource = backup.pc_names_return();

 //Textbox changed function
 private void textBox1_TextChanged(object sender, EventArgs e)    
 {    
    if (textBox1.Text.Length > 4)    
    {    
       try    
       {    
           backup.get_pc_names(textBox1.Text);    
       }    
       catch    
       {    
       }    
    }    
 }

private AutoCompleteStringCollection auto_values = new AutoCompleteStringCollection();

 //Autocomplete PC Names
 public void get_pc_names(string input)
 {
    auto_values.Clear();
    if (input.Length > 0)
       {
          DirectoryEntry de = new 
          DirectoryEntry(ad_connection_string);
          DirectorySearcher ds = new DirectorySearcher(de);
          SearchResultCollection src;
          ds.Filter = "(&(objectCategory=Computer) 
          (objectClass=Computer)(Name=" + input + "*))";
          src = ds.FindAll();
          if (src.Count > 0)
          {
             int counter = 0;
             foreach (SearchResult member in src)
             {
                string temp = member.GetDirectoryEntry().Name;
                temp = temp.Replace("CN=", "");
                auto_values.Add(temp);
                counter++;
                if (counter == 5)
                {
                   break;
                }
            }
         }
      }
  }



 //Return autocomplete
 public AutoCompleteStringCollection pc_names_return()
 {
    return auto_values;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...