內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?我必須在這裏錯過簡單的東西。