我认为这与我的方法中的异步任务有关,但是我不明白为什么显示了我的三个Alert
中的一个而其他的却没有。< / p>
显示了if条件末尾的那个,我希望用户提交第一个Alert
,然后它将继续。
你有个主意吗?
async void CreateInitialTxts()
{
if (InternetConnectionExists)
{
UserDialogs.Instance.Alert("txt", "txt", "txt");
var dataDevices = await downloadDevices.GetDevicesTxt();
fileHandler.CreateTxt("devices.txt", dataDevices);
var dataGasStations = await downloadGasStations.GetGasStationsTxt();
fileHandler.CreateTxt("gasstations.txt", dataGasStations);
fileHandler.CreateTxt("initialsync.txt", "false");
UserDialogs.Instance.Alert("txt", "txt", "txt");
}
else
{
UserDialogs.Instance.Alert("txt", "txt", "txt");
}
}
答案 0 :(得分:0)
我在共享代码中看到了几个问题:
async void CreateInitialTxts()
-永远不会从异步方法返回void
,而是Task
或Task<T>
。 SO和articles上有很多相关的线程对此进行了解释。简而言之,这是一个坏习惯,因为捕获异常可能很棘手。UserDialogs.Instance.Alert
替换为UserDialogs.Instance.AlertAsync
,然后等待它。如果您想让用户批准即将进行的操作,也可以考虑使用Prompt
而不是Alert
。UserDialogs.Instance.Alert
是紧密的耦合,请考虑通过接口包装必要的功能,并使用该接口代替具体的实现。答案 1 :(得分:0)
您需要在SELECT Convert(datetime, FORMAT(20080910173240, '####-##-## ##:##:##'), 101);
内部致电UserDialogs.Instance.Alert
:
Device.BeginInvokeOnMainThread
答案 2 :(得分:0)
您可以在单击第一个对话框的“确定”后显示第二个Dialgo,如下所示:
void DisplayDialog(String title, String message, String buttonText)
{
Device.BeginInvokeOnMainThread(() =>
UserDialogs.Instance.Alert(title: title, message: message, okText: buttonText));
}
在第一个对话框中单击“确定”时,显示第二个对话框:
if (InternetConnectionExists)
{
//Create an AlertConfig
var config = new AlertConfig();
config.Message = "txt";
config.Title = "txt";
config.OkText = "txt";
//create action of "ok"
config.OnAction += Show_Dialog2;
UserDialogs.Instance.Alert(config);
}
else
{
UserDialogs.Instance.Alert("txt", "txt", "txt");
}