行错误:await instance.CreateFile(); await运算符只能在异步方法中使用。考虑使用async修饰符标记此方法并将其返回类型更改为Task 我的理解是该方法已经异步,我不确定我做错了什么。这是VS 2015中的UWP应用程序。
public sealed partial class MainPage : Page
{
private List<Customer> Customers;
public MainPage()
{
this.InitializeComponent();
CustomerDataAccessLayer instance = new CustomerDataAccessLayer();
await instance.CreateFile();
}
}
public class CustomerDataAccessLayer
{
public StorageFile mfile;
public async Task CreateFile()
{
mfile = await ApplicationData.Current.LocalFolder.GetFileAsync("Customers.xml");
if (mfile == null)
{
mfile = await ApplicationData.Current.LocalFolder.CreateFileAsync("Customers.xml", CreationCollisionOption.ReplaceExisting);
}
else
{
}
return;
}
}
答案 0 :(得分:0)
正如其他人所说,错误消息是抱怨调用方法不是async
,但构造函数不能标记为async
。
核心问题是您的UI无法异步加载 - 它必须立即加载 。我建议最初加载某种“加载...”状态,并启动异步操作。然后,当该操作完成时,更新 UI以显示数据。
答案 1 :(得分:-1)
要从同步函数(如构造函数)启动异步操作,可以使用Task。
Task.Run(async () =>
{
//put your async code here
});
要等待此任务,您必须使用更多代码。
Task t = new Task(() => { /*Your code*/ });
t.Wait();