Hey all I have been racking my brain trying to figure out what it is I am missing from the code below in order for the value "7:50 pm" to be placed into the variable theCntDownTimerTime from the TinyWS.cs class.
Let say the code below starts out with the time "7:00 pm".
I send the command from PostMAN (7:50 pm) and it picks it up just fine and the jsonSent.changeCNT does have the correct value of "7:50 pm". However, after this it seems to lose that value once the timer updates in the clockCoiuntDown.xaml.cs page for the theCntDownTimerTime.ToLower(). That value is still the same value (7:00 pm) as it was when the program started up and read my text file to get the default time.
clockCountDown.xaml.cs
namespace laptopWatcher { public partial class clockCountDown : Window { public string theCntDownTimerTime = ""; public clockCountDown() { InitializeComponent(); //get countdown time theCntDownTimerTime = getTimeToStart(); } private void Window_Loaded(object sender, RoutedEventArgs e) { var desktopWorkingArea = SystemParameters.WorkArea; this.Left = desktopWorkingArea.Right - this.Width - 20; this.Top = desktopWorkingArea.Top + this.Height - 30; var ts = ((60 - DateTime.Now.Second) * 1000 - DateTime.Now.Millisecond); clockTimer.Tick += new EventHandler(clockTimer_tick); clockTimer.Interval = new TimeSpan(0, 0, 35); clockTimer.Start(); //Populate the time once to show to user bgTxt.Text = DateTime.Now.ToString("h:mm tt"); txt.Text = DateTime.Now.ToString("h:mm tt"); //check if time for count down if (txt.Text.ToLower().Equals(theCntDownTimerTime.ToLower())) { _timer.Stop(); TimeSpan time = TimeSpan.Parse(theCntDownTimerTime); cdownTimer((_time).TotalSeconds); } _tws = new TinyWS(); Thread t = new Thread(new ThreadStart(_tws.startWS)); t.Start(); } private void clockTimer_tick(object sender, EventArgs e) { bgTxt.Text = DateTime.Now.ToString("h:mm tt"); txt.Text = DateTime.Now.ToString("h:mm tt"); Console.WriteLine(txt.Text.ToLower() + " vs " + theCntDownTimerTime.ToLower()); } public string getTimeToStart() { string line; using (StreamReader sr = new StreamReader(Environment.CurrentDirectory + "\\timestart.txt")) { line = sr.ReadLine(); } return line.ToLower(); } // etc etc.... } }
TinyWS.cs
namespace laptopLogin { class TinyWS : clockCountDown { HttpListener listener = new HttpListener(); clockCountDown ccd = new clockCountDown(); public class receivedData { public string changeCNT { get; set; } public int timeAdd { get; set; } public bool internet { get; set; } public bool shutdownNow { get; set; } } public void startWS() { var prefixes = new List<string>() { "http://*:8888/" }; foreach (string s in prefixes) { listener.Prefixes.Add(s); } listener.Start(); Console.WriteLine("Listening..."); while (true) { HttpListenerContext context = listener.GetContext(); HttpListenerRequest request = context.Request; string documentContents; using (Stream receiveStream = request.InputStream) { using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8)) { documentContents = readStream.ReadToEnd(); } } Console.WriteLine($"Recived request for {request.Url}"); Console.WriteLine(documentContents); HttpListenerResponse response = context.Response; //Check out the response receivedData jsonSent = JsonConvert.DeserializeObject<receivedData>(documentContents); if (jsonSent.changeCNT.ToLower() != ccd.getTimeToStart()) { //The default shutdown time has changed so update the txt file. using (StreamWriter sw = new StreamWriter(Environment.CurrentDirectory + "\\timestart.txt", false)) { sw.WriteLine(jsonSent.changeCNT); } ccd.theCntDownTimerTime = jsonSent.changeCNT; } //Reply string responseString = "hit"; byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); response.ContentLength64 = buffer.Length; Stream output = response.OutputStream; output.Write(buffer, 0, buffer.Length); output.Close(); } } public void stopWS() { listener.Stop(); } } }
So what would I be missing? It looks fine to me but just doesn't store the value over.
I also have tried:
public string theCntDownTimerTime = ""; public string _newCNT { get { return theCntDownTimerTime; } set { theCntDownTimerTime = value; } }
And on the TinyWS.cs page I have it sending by like ccd._newCNT = jsonSent.changeCNT;
But that also does not hold the new value.
https://stackoverflow.com/questions/66848137/changing-value-in-variable-from-another-called-class March 29, 2021 at 10:39AM
没有评论:
发表评论