【发布时间】:2014-11-01 09:53:09
【问题描述】:
我正在 Silverlight 中实现 WCF。
在 Silverlight 中调用 WCF 服务时,我想向用户显示“BusyIndicator”。
我在link 遇到了实施busyindicator。
这是在 C# 中。我正在 vb.net 中开发项目。
无法正确地将其转换为 vb.net
busyIndicator.IsBusy = true;
//busyIndicator.BusyContent = "Fetching Data...";
ThreadPool.QueueUserWorkItem((state) =>
{
Thread.Sleep(3 * 1000);
Dispatcher.BeginInvoke(() => busyIndicator.IsBusy = false);
}
在我的要求中实现上述代码时
VB.Net中的代码如下:
busyIndicator.IsBusy = True
ThreadPool.QueueUserWorkItem(Sub(state)
Dim s As New services.ServiceClient
AddHandler s.confirmticketCompleted, AddressOf mcompleted
s.confirmticketAsync()
Dispatcher.BeginInvoke(Sub()
busyIndicator.IsBusy = False
End Sub)
End Sub)
Sub mcompleted(sender As System.Object, e As services.confirmticketCompletedEventArgs)
MessageBox.Show(e.Result)
End Sub
其中 services.serviceclient 是带有变量 s 的 WCF 代理
需要使用已完成的事件处理程序来获取返回值。
实现代码后,我得到“无效的跨线程访问”。例外在 MessageBox.Show(e.Result)
我的问题类似于link available at StackOverflow
但我听不懂 Ken2k 先生在说什么。
请指导并帮助我解决问题。
【问题讨论】:
标签: vb.net wcf silverlight