我无法完全想出创建通用方法来处理InvokeRequired
for void 方法的解决方案(稍后我将处理返回值)。我在想类似的事情:
// Probably not the best name, any ideas? :)
public static void CheckInvoke(this Control instance,
,Action<object, object> action)
{
if (instance.InvokeRequired)
{
instance.Invoke(new MethodInvoker(() => action));
}
else
{
action()
}
}
然后我可以写如下内容:
public partial class MyForm : Form
{
private ThreadedClass c = new ThreadedClass();
public MyForm()
{
c.ThreadedEvent += this.CheckInvoke(this
,this.MethodRequiresInvoke
,sender
,e);
}
}
这显然不能编译,我只是不能将它完全结合在一起。