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)
            {
            }            
        }

sqlite查询在winrt中无法在后台工作

因为数据保存是异步的。应该延期。

后台任务应该在后台任务开始时获得推荐。运行异步代码需要get延迟。

var deferre=taskInstance.GetDeferral()应该是运行函数的第一行

延期.Complete()应该是运行函数的最后一行