我有一个
Windows窗体,包含一个文本框和一个datagridview.一旦文本框的文本发生更改,datagridview的数据源就会更新.它通过处理文本框的TextChanged事件并为数据源分配新的List来完成.通常,新数据源包含1000行,数据量相当大.此外,查询数据库以获取此列表也很耗时.
让我感到惊讶的是,如果我在文本框中输入的速度足够快,那么datagrid会一次又一次地暂停渲染,并且只会渲染最终结果.它完全忽略了中间结果.这是有道理的,因为在连续的文本更改期间运行的UI线程正忙.但为什么我仍然可以输入文本框?
> TextChange
>获取数据
>刷新DataGridView(无渲染/绘画)
> TextChange
>获取数据
>刷新DataGridView(无渲染/绘画)
> … TextChange
>获取数据
>刷新DataGridView(最终渲染/绘画)
>完成.
这就像文本框在另一个线程上,但绝对不是.有人知道为什么吗?