sqlite查询在winrt中无法在后台工作
本文关键字:后台 工作 查询 winrt sqlite | 更新日期: 2023-09-27 18:28:05
我创建了一个winrt项目。我使用两种方法,一种用于插入数据,另一种用于获取数据。我正在尝试在时间触发事件期间保存数据。当我在后台插入数据时,数据不会被保存。当我在按钮点击事件上使用相同的方法插入数据时,代码正在工作。以下是我调用方法插入数据的代码:
public sealed class BackgroundTask:IBackgroundTask
{
public void Run(IBackgroundTaskInstance taskInstance)
{
ToastTemplateType toastTemplate = ToastTemplateType.ToastText02;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
XmlNodeList textElements = toastXml.GetElementsByTagName("text");
textElements[0].AppendChild(toastXml.CreateTextNode("Background Task"));
textElements[1].AppendChild(toastXml.CreateTextNode("I'm message from your background task!"));
Database d = new Database();
d.saveData("new entry"); //calling the method to insert the string
ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toastXml));
}
}
"saveData"方法:
public async void saveData(string data)
{
SQLiteAsyncConnection connection = new SQLiteAsyncConnection("TimeDb.db");
try
{
var Db = new Database() {
Data = data
};
await connection.InsertAsync(Db);
}
catch (Exception ex)
{
}
}
因为数据保存是异步的。应该延期。
后台任务应该在后台任务开始时获得推荐。运行异步代码需要get延迟。
var deferre=taskInstance.GetDeferral()应该是运行函数的第一行
延期.Complete()应该是运行函数的最后一行