【发布时间】:2022-07-23 10:35:31
【问题描述】:
所以我的确切问题是,我希望程序等待 3 秒,如果没有任何反应,id 应该执行我调用的任何方法。但是如果有人在这 3 秒内输入了一些东西,计时器应该会重新启动。
Threadsleep 不起作用,因为它会阻塞所有内容并且您无法提供任何输入。
例如,我有一个过滤功能,现在我不想在他输入一个字母后立即过滤,我等待 3 秒,如果没有任何反应,我开始过滤。我需要这个,这样我的程序就不会花费很长时间来过滤每个字母。
这是我当前来自 Filtermethod 的代码:
private void ContainsFilter(object sender, EventArgs e, TextBox textBox, DataGridView dataGridView, int columnIndex)
{
if (textBox.Text != "")
{
var value = "";
var filterText = "";
for (int i = 0; i < dataGridView.RowCount; i++)
{
value = Convert.ToString(dataGridView.Rows[i].Cells[columnIndex].Value);
value = value.ToLower();
filterText = textBox.Text;
filterText = filterText.ToLower();
if (value.Contains(filterText) == false)
{
dataGridView.Rows[i].Visible = false;
}
else
{
dataGridView.Rows[i].Visible = true;
}
}
return;
}
for (int i = 0; i < dataGridView.RowCount; i++)
{
dataGridView.Rows[i].Visible = true;
}
return;
}
【问题讨论】:
-
这是控制台程序还是 GUI?如果是后者,Winforms 还是别的什么?另外,你能显示你当前的代码吗?
-
你能添加一些相关的代码,比如你尝试过的东西
-
我认为任务是最好的选择。
await Task.Delay持续三秒钟,然后检查任务是否中止 - 如果没有,继续。每次输入时,您都会中止最近的任务并开始新的任务。
标签: c#