【发布时间】:2013-04-05 13:17:56
【问题描述】:
我正在使用线程在程序的 UI 中运行长时间的操作,这样它就不会被锁定。但是,在这些任务中,我需要更新控件,这不可能不是来自创建它们的线程。建议使用 control.BeginInvoke(Delegate) 来执行你想要的方法。
但是,要做到这一点,您必须声明一个委托类型,然后才能调用它们。
所以,它是这样的:如果我想执行方法 void Update(),我必须去:
delegate void CallbackVoid();
void Update() {...}
...(in task code)...
this.BeginInvoke(new CallbackVoid(Update));
对于现有的每一种方法来说,这都是相当令人厌烦的。我不能以某种方式自然地做到这一点,例如:
void Update() {...}
this.BeginInvoke(Update);
【问题讨论】:
标签: c# multithreading delegates invoke