【发布时间】:2015-10-30 07:11:10
【问题描述】:
我正在使用 Mvvm Light 开发一个 xamarin android 应用程序,我有一个正在调用的方法,我想将其更改为异步方法,但我不确定如何。只是好奇如何做到这一点。它适用于 Visual Studio 中的 Xamarin Android 应用
调用方法:
protected override void onResume()
{
ObservableCollection locObs = Vm.ShowLocations();
}
方法:
public ObservableCollection<Location> ShowLocations()
{
if (Debugger.IsAttached)
{
if (Locations != null)
{
var locationsCopy = Locations.ToList();
Locations = new ObservableCollection<Location>(locationsCopy);
}
Election elec = IntentManager.Instance.CurrentElection;
elec.Locations = new System.Collections.ObjectModel.ObservableCollection<Location>();
Location loc = new Location();
loc.Name = "Alan Middle School";
loc.Address = "300 S. County Farm Road";
elec.Locations.Add(loc);
Location loc2 = new Location();
loc2.Name = "Bill High School";
loc2.Address = "100 S. County Farm Road";
elec.Locations.Add(loc2);
Location loc3 = new Location();
loc3.Name = "Cameron Fire Station";
elec.Locations.Add(loc3);
Location loc4 = new Location();
loc4.Name = "Danvill Senior Center";
elec.Locations.Add(loc4);
Locations = elec.Locations;
}
return Locations;
}
【问题讨论】:
-
该方法中没有异步调用。将其标记为异步不会做任何事情。
-
在 Java 中你会使用
AsyncTask。这是那个班级的Xamarin Documentation。 -
您不能只使方法异步。需要涉及一些固有的异步操作,这将受益于使用 async 关键字。
-
这个方法只是分配了一堆静态数据。这里没有任何异步可供我们使用。要求我们帮助您将此方法设置为“异步”就像要求我们将此方法设置为“紫色”。感谢您尝试学习新东西,但这不是一个好的示例选择。
-
如果您首先提到使用服务调用,或者在您的示例中对服务进行虚拟调用,那会使整个讨论变得容易得多。
标签: c# android xamarin async-await visual-studio-2015