Example #1
0
        private void ThreadPoolRunner(object state)
        {
            lock (_lock)
            {
                WorkItemInfo info = (WorkItemInfo)state;

                using (SqliteTransaction transaction = info.database.BeginTransaction())
                    using (SqliteCommand command = info.database.CreateCommand())
                    {
                        command.Transaction = transaction;
                        if (info.queriesCount == 1)
                        {
                            ExecuteOnce(command, info.query);
                        }
                        else
                        {
                            ExecuteMany(command, info.queries, info.queriesCount);
                        }
                        transaction.Commit();
                    }

                _workItemPool.Pay(info);
            }

            ThreadSafety.RunOnMainThread(_completedAction);
        }