AdjustSdk.Pcl.RequestHandler.SendPackage C# (CSharp) Method

SendPackage() public method

public SendPackage ( ActivityPackage package ) : void
package ActivityPackage
return void
        public void SendPackage(ActivityPackage package)
        {
            Task.Factory.StartNew(() => SendInternal(package))
                // continuation used to prevent unhandled exceptions in SendInternal
                // not signaling the WaitHandle in PackageHandler and preventing deadlocks
                .ContinueWith((sendResponse) => PackageSent(sendResponse));
        }

Usage Example

Example #1
0
        private void SendFirstInternal()
        {
            if (PackageQueue.Count == 0)
            {
                return;
            }

            if (IsPaused)
            {
                Logger.Debug("Package handler is paused");
                return;
            }

            // no need to lock InternalWaitHandle between WaitOne(0) call and Reset()
            // because all Internal methods of PackageHandler can be only executed by 1 thread at a time

            if (InternalWaitHandle.WaitOne(0)) // check if the door is open without waiting (waiting 0 seconds)
            {
                InternalWaitHandle.Reset();    // close the door (non-signals the wait handle)
                RequestHandler.SendPackage(PackageQueue.First());
            }
            else
            {
                Logger.Verbose("Package handler is already sending");
            }
        }