public void run() { if (!DataBase.connect()) { Console.WriteLine("Error, database not connected!"); return; } listener.Start(); Console.WriteLine("Listening for connections on {0}", url); Thread minuteTasksThread = new Thread(delegate() { while (true) { if (!DataBase.getEndedSaleNotifications()) { Console.WriteLine("Couldn't generate sale end notifications!"); } Thread.Sleep(60000); } }); //so it exits when app exits minuteTasksThread.IsBackground = true; minuteTasksThread.Start(); while (true) { /*if(Console.In.Peek() != -1) * { * string command = Console.ReadLine(); * if (command == "stop") * { * break; * } * else * { * Console.WriteLine("unrecognized command: '" + command + "'"); * } * }*/ HttpListenerContext context = listener.GetContext(); HttpListenerRequest request = context.Request; HttpListenerResponse response = context.Response; Console.WriteLine("[" + DateTime.Now.ToLongTimeString() + "] " + request.Url.ToString()); byte[] data; try { switch (request.HttpMethod) { case "GET": data = handleGET(request); break; case "POST": data = handlePOST(request); break; default: data = null; break; } if (data == null) { data = Encoding.UTF8.GetBytes("{}"); response.StatusCode = 400; } }catch (Exception e) { data = Encoding.UTF8.GetBytes("{}"); response.StatusCode = 500; Console.WriteLine(e); } response.ContentType = "application/json"; response.ContentEncoding = Encoding.UTF8; response.ContentLength64 = data.LongLength; response.OutputStream.Write(data, 0, data.Length); response.Close(); } listener.Close(); }