c# - 如何防止ListView排序阻塞程序
问题描述
我有一个包含数百个项目的列表,当我尝试对项目进行排序时,它总是阻止我的程序。这太烦人了。我尝试使用 Task.Run(),它不起作用。
private void resultListView_ColumnClick(object sender, ColumnClickEventArgs e)
{
// doesn't work
Task.Run(() => ListViewOperate((ListView)sender, ListViewOP.SORT));
// doesn't work
resultListView.BeginUpdate();
ListViewOperate((ListView)sender, ListViewOP.SORT);
resultListView.EndUpdate();
}
private delegate void ListViewOperateDelegate(System.Windows.Forms.ListView liv,
ListViewOP op);
private void ListViewOperate(System.Windows.Forms.ListView liv, ListViewOP op)
{
if (liv.InvokeRequired)
{
var addDele = new ListViewOperateDelegate(ListViewOperate);
liv.Invoke(addDele, new object[] { liv, op});
}
else
{
if (op == ListViewOP.SORT)
{
liv.BeginUpdate();
liv.Sort();
liv.EndUpdate();
}
}
}
解决方案
推荐阅读
- regex - 为什么使用 WinSCP .NET 程序集时此 SSH 主机密钥指纹与模式不匹配
- sql - JSON_TABLE 过滤条件问题
- r - 在 R 中:在 group_by 中找到最接近的值,不包括自我比较
- javascript - 在多行上切换内容
- r - 按降序排列连续数据
- javascript - 我们可以将 Cordova 插件添加到 package.json 吗?
- javascript - 将获取返回的承诺作为 ReactJS 中的上下文值传递
- java - Word 文档消息
- pandas - conda 更新所有搞砸的熊猫分析
- javascript - 如何摆脱 HTML 选择控件中的默认空格?