У меня есть textbox
в моем приложении C #.У меня есть textbox_textchanged
функция, которая проверяет, изменил ли пользователь его содержимое.Если это событие инициировано, оно получит данные из моей базы данных и поместит их как autocomplete source
из моих textbox
.
Иногда это работает, но большую часть времени он просто переводит мое приложение в режим прерывания и затем говорит: "Memory Access Violation"
Я новичок в C # и не знаю, почему это происходитЯ подозреваю, что при быстром наборе событие триггера выполняется так быстро, что соединение mysql не может поддерживать.Помогите мне, пожалуйста.:
Вот функция, которая обрабатывает событие Textaged:
if (txtSearch.TextLength > 0)
{
try
{
using (MySqlConnection connect = new MySqlConnection(cs))
{
connect.Open();
using (var cmd = connect.CreateCommand())
{
cmd.CommandText = "SELECT name FROM search WHERE name LIKE @sname";
cmd.Parameters.Add(new MySqlParameter("sname", "%" + txtSearch.Text + "%"));
using (MySqlDataReader read = cmd.ExecuteReader())
{
AutoCompleteStringCollection collect = new AutoCompleteStringCollection();
while (read.Read())
{
collect.Add(read.GetString(0));
}
connect.Close();
read.Close();
read.Dispose();
txtSearch.AutoCompleteCustomSource = collect;
}
}
}
}
catch (Exception ex)
{
error(ex.Message, "Error");
}
}
}
Это сообщение об ошибке:
Ваше приложение вошло в состояние останова, но неткод для отображения, потому что все потоки выполняли внешний код (обычно системный или структурный код).
System.AccessViolationException: 'Попытка чтения или записи защищенной памяти.Это часто указывает на то, что другая память повреждена. '
Это должно только обновить коллекцию Autocomplete
моего текстового поля.Что Материя