C#SetPropertyThreadSafe vs调用线程安全调用

Mar*_*o M 0 .net c# multithreading invoke backgroundworker

从另一个线程更新UI这两种方法中哪一种更好?(对我来说,他们都工作,但哪个更安全?)我更喜欢SetPropertyThreadSafe方法,因为它需要更少的代码.

1.

label1.SetPropertyThreadSafe(() => this.label1.Text, "New Value");
Run Code Online (Sandbox Code Playgroud)

2.

if (label1.InvokeRequired)
{
   label1.Invoke(new MethodInvoker(delegate {
   label1.Text="New Value"; }));
}            
Run Code Online (Sandbox Code Playgroud)

Sco*_*ain 5

SetPropertyThreadSafe如果您正在使用此实现,则不是.NET内置的方法

public static TResult GetPropertyThreadSafe<TControl, TResult>(this TControl self, Func<TControl, TResult> getter)
    where TControl: Control
{
    if (self.InvokeRequired)
    {
        return (TResult)self.Invoke(getter, self);
    }
    else
    {
        return getter(self);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你发布的两个例子做的完全相同,所以没有区别.