//tu liczymy wpływy na temp w pomieszczeniu - piec klima pogoda rozmiar budynku
        public void TempUpdate(int TExpected, int TNow, int THeat, int TConditioner, int TWeather)
        {
            double conditioner = (TExpected - TNow >= 0) ? 0 : (TConditioner / 2.5);
            double heater      = (TExpected - TNow <= 0) ? 0 : (THeat / 5.0);

            if (Line_WorkHours[hour].Y == 0)
            {
                conditioner = 0;
                heater      = 0;
            }
            double weather = ((TNow + 1.0) - TWeather == 0)? 0:Math.Log10(Math.Abs((TNow + 1.0) - TWeather));

            if (TWeather < TNow)
            {
                weather *= -1;
            }

            double buildingDimension = (((WallHeightList[SelectedWallHeight] / 100 * Math.Sqrt(RoomAreaList[SelectedRoomArea]) + WindowAreaList[SelectedWindowArea] / 2) * Math.Sqrt(RoomAreaList[SelectedRoomArea]) / 10));

            double result = (heater / buildingDimension + weather - Math.Abs(conditioner));

            result   = (result > 0) ? (result / StartValues.UpdateTime) : (result / StartValues.UpdateTime);
            TempNow += result;
            Line_Weather.AddNext(TempNow, TWeather);
        }
        //metoda wywoływana na okrągło(przerwy jako task.sleep) ma za zadanie
        //dodanie temp pogody (co godzine)
        //obliczenie środkow ciezkosci
        //wyliczanie zmiany temp w pomieszczeniu
        //przesuwanie wykresu pogody

        private void TaskMethodHelper(int sleep)
        {
            Time = "1";
            try
            {
                Application.Current.Dispatcher.Invoke((Action)(() =>
                {
                    //dodanie kolejnej temp na wykresie pogody
                    int nextWeatherTemp = Line_Weather.NextTemp();

                    for (int i = 0; i < StartValues.UpdateTime; i++)
                    {
                        //wyliczanie środkow ciezkosci dla klimy i pieca (wyniki dostepne w geterach)
                        x.Rozmywanie(Line_Heat, Line_Conditioner, Line_Temp, (int)Math.Round(TempNow), Line_WorkHours, hour);

                        //wyliczanie temp pieca i klimatyzacji na podstawie środka ciezkosci
                        CalculateTempOfHeater(x.CenterOfGravityHeater);
                        CalculateTempOfConditioner(x.CenterOfGravityConditioner);
                        //wyliczanie zmiany temp w pomieszczeniu
                        TempUpdate(TempExpected, (int)Math.Round(TempNow), TempHeat, TempConditioner, nextWeatherTemp);
                    }
                    Line_Weather.xWeather += StartValues.UpdateTime;
                    hour = (hour == 23) ? 0 : hour + 1;
                    //przesuwanie wykresu pogody
                    if (_Line_Weather.Count >= StartValues.HoursOnChart)
                    {
                        WeatherXmin += 4;
                        WeatherXmax += 4;
                    }
                }));
            }
            catch (System.NullReferenceException)
            {
                //nic sie nie stało wanego
            }
            Thread.Sleep(sleep);
        }