2013-08-27 29 views
1

在线程中我想改变标签的值Dispatcher.Invoke不改变标签的值

我发现我必须使用Dispatcher.Invoke。

尝试这种代码:

Me.Dispatcher.Invoke(DispatcherPriority.Background, (Function() Me.Label2.Content = "Scanning done.")) 

,但它不会改变的价值。

我在做什么错?

@edit:我的目标框架是4.0

+0

多久你久等了。 BackgroundPriority不会立即改变... –

+0

我等了大约10秒,但我试图改变背景其他优先事项。仍然没有改变。 – Disa

回答

2

中最突出的问题是您使用的是Function,你应该使用一个Sub因为没有返回值。另外,你的参数是向后的。

以下应为你工作:

Me.Dispatcher.Invoke(Sub() Me.Label2.Content = "Scanning done.", DispatcherPriority.Background) 
+0

我的代码是写在VB.NET – Disa

+0

但这:'Label2.Dispatcher.Invoke(DispatcherPriority.Background,(功能()Label2.Content = “扫描完成。”))'无法正常工作或 – Disa

+0

请参阅编辑VB.NET。 – Khan

0

试试这个(.NET 4.5,在C#):

Application.Current.Dispatcher.InvokeAsync(() => Label2.Content = "Scanning done."); 
+0

他们要求在VB.NET中的语法。我相应地更新了问题中的标签。 – Khan