コード例 #1
0
        private async Task StrokesWriterThread(CancellationToken cancellationToken)
        {
            while (true)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    Logger.Info("The strokes writer thread was cancelled.");
                    return;
                }

                Thread.Sleep(IsOffline ? Constants.OfflineRefreshRate : Constants.OnlineRefreshRate);
                if (StrokesToUpdate.Count == 0)
                {
                    continue;
                }

                StrokeModelsMap strokesSnapshot;
                lock (StrokesLock)
                {
                    strokesSnapshot = new StrokeModelsMap(StrokesToUpdate);
                    StrokesToUpdate.Clear();
                }

                if (IsOffline)
                {
                    Cache.Write(DatabasePaths.Strokes, DrawingId, StrokesMap);
                }
                else
                {
                    await DatabaseService.Ref(DatabasePaths.Strokes).Child(DrawingId).Update(strokesSnapshot);
                }
            }
        }
コード例 #2
0
 private void SyncRemoteStrokesToLocal(StrokeModelsMap strokes)
 {
     StrokesMap = strokes;
     PurgeOverrideMap();
     StrokesUpdated?.Invoke();
 }