private void BlpComStatusesLoaded(object sender, StatusesLoadingEventArgs e)
{
try
{
lock (lockUpdateQueue)
{
statusUpdateQueue.Clear();
}
if (e.Statuses.Count > 0)
{
lock (lockLastStatus)
{
//ładujemy statusy od nowa więc, nie ma co sprawdzać
//od razu przypisujemy najnowszy status
newestStatusId = e.Statuses[0].Id;
}
//informacja że załadowano statusy
statusesLoaded = true;
if (consumeStatusesThread != null)
{
//consumeStatusesThread.IsAlive;
//przerywamy wątek
consumeStatusesThread.Abort();
}
IList<StatusViewModel> sts = ViewModelHelper.MapToViewStatus(e.Statuses, blipfaceUser.UserName);
//EnqueueStatuses(sts, QueueKind.LoadsQueue);
consumeStatusesThread = new Thread(new ParameterizedThreadStart(ConsumeLoads));
consumeStatusesThread.Name = "BlipFace consume Loaded Statuses";
consumeStatusesThread.IsBackground = true;
consumeStatusesThread.Start(sts);
//ThreadPool.QueueUserWorkItem(c => ConsumeLoads());
/*
//ostatni ststus
StatusViewModel initStatus = sts[0];
sts.RemoveAt(0);
//jak najszybciej ustawiamy status na liście, aby użytkownik nie czekał
//aż zostaną przetworzone wszystkie statusy
var oneStatusList = new ObservableCollection<StatusViewModel>();
RetriveStatusHyperlinks(initStatus);
oneStatusList.Add(initStatus);
//inicjujemy listę statusów tylko jednym statusem, pozostałe będą dodawanie
if (view.Statuses != null)
view.Statuses = null;
view.Statuses = oneStatusList;
for (int i = 0; i < sts.Count; i++)
{
if (view.Statuses != null)
{
RetriveStatusHyperlinks(sts[i]);
view.AddStatus(sts[i], false);
}
else
{
//wyjdź z metody
statusesLoaded = false;
return;
}
}
*/
//view.Statuses = new List<StatusViewModel>(sts);
view.ConnectivityStatus = SetConnectivityStatus(ConnectivityStatus.Online);
}
}
catch (Exception exeption)
{
view.Error = exeption;
}
if (mode != UpdateMode.Archive)
{
ThreadPool.QueueUserWorkItem(c => ConsumeStatuses());
//co by się nie działo to trzeba to uruchomić uruchamiamy wątek z przetważaniem statusów
//consumeStatusesThread =new Thread(ConsumeStatuses);
//consumeStatusesThread.Name = "BlipFace consume Statuses";
//consumeStatusesThread.IsBackground = true;
//consumeStatusesThread.Start();
//uruchamiamy z normalnym czasem timer
StartListeningForUpdates(refreshTimeSec);
}
}