内Xamarin(C#)后,我有SlSvcUtil.exe产生WCF服务被称为与basicHttpBinding的。这一切都有效。我所做的只是注册一个回调,调用服务并等待数据。填充的TableView在主UI线程中调用WCF服务
这部分并不重要,但我们不得不包装我们的物品,以获得WCF发挥不错。所以我创建了一个包装WCF调用的函数,并返回我们的解包对象列表。这一切都可以工作。
问题是,我试图让这个从TableViewController内或TableViewSource内工作。如果所有我的回调确实是一样的东西下面,它的工作原理:
//Inside TableViewSource
private void Callback(List<MyObject> objects) {
for (int i = 0; i < objects.Count; i++) {
_items.Add(objects[i]);
}
}
不过,我仍然需要调用TableView.ReloadData()
。调用此失败,因为我不在主UI线程。有一个TableView.BeginInvokeOnMainThread(NSAction action)
函数,但NSAction不能带参数,所以我不能返回我的列表。
我也试过张贴通知,但是这没有出于同样的原因(可能是因为我是从张贴在回调中):
//Inside TableViewController
private void PropertyChanged(NSNotification notification) {
TableView.ReloadData();
// or TableView.BeginInvokeOnMainThread(() => TableView.ReloadData());
}
//Inside TableViewSource
private void Callback(List<MyObject> objects) {
//work here
NSNotificationCenter.DefaultCenter.PostNotificationName("Objects", this);
}
我如何通过我的列表主UI线程和填充我的TableView?我必须在这里错过简单的东西。