如何在执行任何功能之前加载视图页面?
应用流程:
1.用户将点击登录按钮
2.我将导航到同步页面
3.同步页面在执行6个功能后将执行六(6)个功能,它将重定向到我的主菜单页面
问题出在我的1号和2号程序上。当用户单击登录按钮时,它将停留在我的登录页面中,然后直接转到我的主菜单页面。在重定向到主菜单页面之前,如何查看同步页面。
public SyncPage (string host, string database, string contactID)
{
InitializeComponent();
new Task(SyncSetup).Start();
}
async void SyncSetup()
{
Deletedata();
InsertUserData(host, database, contactID);
InsertCAFData(host, database, contactID);
InsertContactsData(host, database, contactID);
InsertActivityData(host, database, contactID);
Device.BeginInvokeOnMainThread(() =>
{
// Assuming this function needs to use Main/UI thread to move to your "Main Menu" Page
OnSyncComplete(host, database, contactID);
});
}
答案 0 :(得分:2)
我会将这些功能/过程移至单独的线程/任务,一种超简单的方法是使用即发即弃任务,让该任务处理那些设置过程,然后移回UI线程以移动您的“主菜单”页面。
类似这样的东西:
string contactID; string host; string database;
public SyncPage (string contactID, string host, string database)
{
InitializeComponent();
this.contectID = contactID; this.host = host; this.database = database;
new Task(SyncSetup).Start(); // Or do this in OnAppearing override
}
protected override void OnAppearing()
{
base.OnAppearing();
new Task(SyncSetup).Start(); // This could be an await'd task if need be
}
async void SyncSetup()
{
Deletedata();
InsertUserData(host, database, contactID);
InsertCAFData(host, database, contactID);
InsertContactsData(host, database, contactID);
InsertActivityData(host, database, contactID);
Device.BeginInvokeOnMainThread(() =>
{
// Assuming this function needs to use Main/UI thread to move to your "Main Menu" Page
OnSyncComplete(host, database, contactID);
});
}