我遇到堆腐败问题并经过一些帮助。
我有一个下拉组合框,其中数据源是网络驱动器上的简单目录列表。
然后我调用partial类来应用过滤器.i.e在列表中只显示与类型字符匹配的行。这就是问题所在。它非常随机。它可以连续工作10或15次,然后因堆损坏错误而停止。或者连续几次停止然后再次工作。
我是非常缺乏经验的C#开发人员,所以请和我在一起!
我按以下方式发起了名单:
List<string> arrProjectList;
this.List = Directory.GetDirectories(sRootDirectoryPrograms).Select(Directory => Path.GetFileName(Directory)).ToList();
然后在我的部分课程中,我会做以下事情:
public void DropDownTextUpdated()
{
string filter_param = SelectJobDropdown.Text;
if (String.IsNullOrWhiteSpace(filter_param))
{
//reset some variables
}
else
{
if (filter_param != null)
{
List<string> filteredItems = this.arrProjectList.FindAll(x => x.ToLower().Contains(filter_param.ToLower()));
if (filteredItems.Count == 0)
{
//reset some variables
}
else
{
/*************************************/
//this is where issue occurs on random!!!
/*************************************/
SelectJobDropdown.DataSource = filteredItems;
SelectJobDropdown.IntegralHeight = true;
}
SelectJobDropdown.DroppedDown = true;
Cursor.Current = Cursors.Default;
// remove automatically selected first item
SelectJobDropdown.SelectedIndex = -1;
SelectJobDropdown.Text = filter_param;
// set the position of the cursor
SelectJobDropdown.SelectionStart = filter_param.Length;
SelectJobDropdown.SelectionLength = 0;
}
}
更新:
错误详情: 希望这是足够的细节。
System.AccessViolationException未处理 消息:未处理的类型&#39; System.AccessViolationException&#39;发生在System.Windows.Forms.dll中 附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
正如我所说的随机但当它发生时,它会在我输入单个字符时立即发生。
我读到了一些调试,但不知道如何解决这个问题!
任何帮助将不胜感激