Esempio n. 1
0
        public async Task DisposeAsync()
        {
            if (disposed)
            {
                return;
            }
            disposed = true;
            queue.Add(null);
            if (subscription != null)
            {
                subscription.Dispose();
            }

            // The first await call in this method MUST call ConfigureAwait(false) in order to avoid DEADLOCK when this code is called by synchronize code, like Dispose().
            await operationTask.ConfigureAwait(false);

            operationTask.AssertNotFailed();

            ReportInternal("Finished writing all results to server");

            long operationId;

            using (var response = await operationRequest.RawExecuteRequestAsync())
                using (var stream = response.GetResponseStream())
                    using (var streamReader = new StreamReader(stream))
                    {
                        var result = RavenJObject.Load(new JsonTextReader(streamReader));
                        operationId = result.Value <long>("OperationId");
                    }

            while (true)
            {
                if (await IsOperationCompleted(operationId))
                {
                    break;
                }

                Thread.Sleep(500);
            }

            ReportInternal("Done writing to server");
        }
Esempio n. 2
0
            public async Task DisposeAsync()
            {
                if (disposed)
                {
                    return;
                }
                disposed = true;
                queue.Add(null);
                await operationTask;

                operationTask.AssertNotFailed();

                ReportInternal("Finished writing all results to server");

                long operationId;

                using (var response = await operationRequest.RawExecuteRequestAsync())
                    using (var stream = response.GetResponseStream())
                        using (var streamReader = new StreamReader(stream))
                        {
                            var result = RavenJObject.Load(new JsonTextReader(streamReader));
                            operationId = result.Value <long>("OperationId");
                        }

                while (true)
                {
                    if (await IsOperationCompleted(operationId))
                    {
                        break;
                    }

                    Thread.Sleep(500);
                }

                ReportInternal("Done writing to server");
            }