110,561
社区成员
发帖
与我相关
我的任务
分享
void start()
{
var a = new StringBuilder(DateTime.Now.ToString());
KeyEventHandler proc = null;
proc = (s, arg) =>
{
if (arg.KeyCode == Keys.Enter)
{
this.textBox1.KeyDown -= proc;
a.Append(this.textBox1.Text);
test(a.ToString());
}
};
this.textBox1.KeyDown += proc;
}
void test(string x)
{
//.......
}
大脑中,对于异步的事情,要学会一分为二。你将任务委托注册给人家,然后当事件发生时,自然就调用起委托而继续处理了。不需要你浪费巨大资源、死缠烂打地在那里纠结什么线程、死循环、WaitOne、信号量之类的。KeyEventHandler proc = null;
proc = (s, arg) =>
{
if (arg.KeyCode == Keys.Enter)
{
this.textBox1.KeyDown -= proc;
MessageBox.Show("您输入了:" + textBox1.Text);
}
};
this.textBox1.KeyDown += proc;
this.textBox1.Text = "abc";
这是一个很基本的捕获事件并且“继续执行”的编程模式。首先是产生委托,然后注册事件处理方法,在事件回调时首先取消事件监听,然后就可以“再处理下一个功能”了!