gpt4 book ai didi

c# - Xamarin 表单 - 异步 ContentPage

转载 作者:行者123 更新时间:2023-11-30 13:36:37 24 4
gpt4 key购买 nike

我有以下内容页面,我想在其中加载 Steema Teechart,但我不能,因为我无法使 MainPage 异步:

我的主页:

public class MainPage : ContentPage
{
public MainPage (bool chart)
{
ChartView chartView = new ChartView
{
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
HeightRequest = 300,
WidthRequest = 400
};

LineModel test1 = new LineModel();
chartView.Model = await test1.GetModel();

//put the chartView in a grid and other stuff

Content = new StackLayout {
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
Children = {
grid
}
};
}
}

我的 LineModel 类:

public class LineModel
{
public async Task<Steema.TeeChart.Chart> GetModel ()
{ //some stuff happens here }
}

如何使 MainPage 异步以便 chartView.Model = await test1.GetModel(); 可以工作?我试过使用“async MainPage”,但出现错误。

最佳答案

不,你不能。 Constructor can't be async in C# ;典型的解决方法是使用异步工厂方法。

public class MainPage : ContentPage
{
public MainPage (bool chart)
{
ChartView chartView = new ChartView
{
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
HeightRequest = 300,
WidthRequest = 400
};
}

public static async Task<MainPage> CreateMainPageAsync(bool chart)
{
MainPage page = new MainPage();

LineModel test1 = new LineModel();
chartView.Model = await test1.GetModelAsync();
page.Content = whatever;

return page;
}
}

然后将其用作

MainPage page = await MainPage.CreateMainPageAsync(true);

请注意,我已将“Async”后缀添加到方法 GetModel 中,这是用于异步方法的通用约定。

关于c# - Xamarin 表单 - 异步 ContentPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31848820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com