4
我有以下代码,我一直在使用线程安全方式设置属性(改编自this other SO question,但我无法调整它以获取属性。Winforms - 以线程安全方式更新属性的最简单方法
这是线程安全的方式代码我一套物业
public static void SetPropertyThreadSafe(this TControl self, Action setter)
where TControl : Control
{
if (self.InvokeRequired)
{
var invoker = (Action)(() => setter(self));
self.Invoke(invoker);
}
else
{
setter(self);
}
}
这是做称为如下:
this.lblNameField.SetPropertyThreadSafe(p => p.Text = "Name:");
这是我的以线程安全方式代码尝试get属性。
public static TResult GetPropertyThreadSafe(this TControl self, Func getter)
where TControl : Control
{
if (self.InvokeRequired)
{
var invoker = (Func)((TControl control) => getter(self));
return (TResult)self.Invoke(invoker);
}
else
{
return getter(self);
}
}
它不起作用。我希望喜欢做称呼它为以下几点:
string name = this.lblNameField.GetPropertyThreadSafe(p => p.Text);