【发布时间】:2019-11-09 01:52:23
【问题描述】:
我的 xamarin.forms 应用程序包含一个列表视图,它将从 Rest API 加载值。它工作正常。我在列表视图上方有一个按钮。当我单击按钮时,将再次放置列表视图 API 调用,并且列表视图应该更新。但卡在这个更新部分。我没有使用 MVVM 模式。列表视图列表部分是一个异步任务。当按钮单击时,我再次调用异步任务,但应用程序崩溃。是不是因为点击按钮再次调用异步任务?任何帮助表示赞赏。
这是我的代码。
namespace app
{
public partial class List : ContentPage
{
PendingWeekRange pendingWeekRange = new PendingWeekRange();
public TimeSheetList()
{
InitializeComponent();
Task.Run(async () =>
{
await LoadScreenItems();
});
}
async Task LoadScreenItems()
{
await Task.Run(async () => {
try
{
// Doing some stuff
await loadTimeSheetList();
}
catch (Exception)
{
}
});
}
async Task loadTimeSheetList()
{
await Task.Run(() => { + string postdataForPendingList = "{\"date\":\"" + "1" + "\"}";
APICall callForAPICallResult = new APICall("/API/ListMobile/ListForApproval", postdataForList, loadingIndicator);
try
{
List<ListData> resultObjForPendingTimeSheetList = callForAPICallResult<List<ListData>>();
if (resultObjForPendingTimeSheetList != null)
{
TimesheetList.ItemsSource = resultObjForPendingTimeSheetList;
screenStackLayout.VerticalOptions = LayoutOptions.FillAndExpand;
TimesheetList.IsVisible = true;
}
else
{
}
}
catch (Exception)
{
}
});
}
async void Button_Tapped(object sender, EventArgs e)
{
try
{
// Calling my listview again. After calling app gets crash
Task.Run(async () => await loadTimeSheetList());
}
catch (Exception ex) { }
}
}
}
【问题讨论】:
-
用这个更新你的代码并检查。 async void Button_Tapped(object sender, EventArgs e) { try { // 再次调用我的列表视图。调用应用程序崩溃后等待 loadTimeSheetList(); } 捕捉(异常前){ } }
-
@KrunalBagadia 嗨,我试过了,还是不行
-
@AndroDevil 你的
APICallResult是任务类型方法吗?如果是这样,为什么不直接称它为await callForPendingTimeSheetList.APICallResult<List<TimeSheetListData>>();? -
@LandLu-MSFT Bro 我编辑了我的代码。 “APICALL”是另一个进行 API 调用的类
-
@AndroDevil 仍然无法弄清楚您的 APICall 是什么样的。尝试用 const fake list data 测试一下,还会崩溃吗?
标签: xamarin.forms