W zdarzeniu click przycisku logowania (później już nienaciskany) uruchamiam dispatchertimer:
timer.Tick += new EventHandler(dispatcherTimer_Tick);
timer.Interval = new TimeSpan(0, 0, 1);
timer.Start();
W zdarzeniu Tick:
for (int i = 0; i < checkedItems.Count; i++)
{
if (checkedItems[i].AuctionIsBid)
{
if (checkedItems[i].AuctionSecondsToEnd % 30 == 0)
{
webapi.ItemInfoStruct[] itemInfoStruct2;
indeksArray[0] = checkedItems[i].AuctionIndex;
itemInfoStruct2 = service.doGetItemsInfo(sessionHandle, indeksArray, 0, 0, 0, 0, 0, 0, out itemsNotFound, out itemsAdminKilled);
checkedItems[i].AuctionPrice = itemInfoStruct2[0].itemInfo.itPrice;
checkedItems[i].AuctionWinnerId = itemInfoStruct2[0].itemInfo.itHighBidder;
LogListbox.Items.Add("Zaktualizowano produkt o nazwie ");
}
else if()
{
//pozostałe warunki nie mające znaczenia
}
else { checkedItems[i].AuctionSecondsToEnd--;}
}
Funkcja ma się wykonywać domyślnie co 5 minut albo trochę więcej jeszcze nie zdecydowałem, ale dla testów ustawiłem 30 sekund. Jednak kiedy metoda wchodzi w if (checkedItems.AuctionSecondsToEnd % 30 == 0) wtedy zamiast wykonać się raz wpada w pętle i wykonuje się bez przerwy, nie wchodzi do elsa w którym odejmuje sekundy.
Będę wdzięczny za wszelkie propozycje co może być nie tak.