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)
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)
然后你发布的两个例子做的完全相同,所以没有区别.
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |