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:");
これは私ですスレッドセーフな方法でコードを取得しようとします。
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);