Пример #1
0
            public override async Task <bool> Run()
            {
                var itemId = ItemIdDelegate();

                CachedWoWItem = Me.CarriedItems.FirstOrDefault(i => (i.Entry == itemId));

                if (Query.IsViable(CachedWoWItem))
                {
                    // Squelch the timer, so it will be available if the item disappears from our bags...
                    WatchdogTimer_WaitForItemArrival = null;
                    return(false);
                }

                // If timer is not spinning, create & start it...
                if (WatchdogTimer_WaitForItemArrival == null)
                {
                    WatchdogTimer_WaitForItemArrival = new WaitTimer(TimeSpan.FromMilliseconds(MaxWaitTimeInMillisecondsDelegate()));
                    WatchdogTimer_WaitForItemArrival.Reset();
                }

                // If timer completes, time to call it quits...
                if (WatchdogTimer_WaitForItemArrival.IsFinished)
                {
                    QBCLog.ProfileError(
                        "{0} has not arrived in our bag within {1}.",
                        Utility.GetItemNameFromId(itemId),
                        Utility.PrettyTime(WatchdogTimer_WaitForItemArrival.WaitTime));
                    ActionOnExpiredTimerDelegate();
                }
                else
                {
                    TreeRoot.StatusText = String.Format(
                        "Waiting {0} for {1} to arrive in our bags.",
                        Utility.PrettyTime(WatchdogTimer_WaitForItemArrival.WaitTime),
                        Utility.GetItemNameFromId(itemId));
                }

                return(true);
            }