public void RunTimer() { StateObjClass StateObj = new StateObjClass(); StateObj.TimerCanceled = false; StateObj.SomeValue = 1; System.Threading.TimerCallback TimerDelegate = new System.Threading.TimerCallback(TimerTask); System.Threading.Timer TimerItem = new System.Threading.Timer(TimerDelegate, StateObj, 0, 3000); // Save a reference for Dispose. StateObj.TimerReference = TimerItem; CPacket msg = CPacket.create(); JsonObjectCollection collection = new JsonObjectCollection(); collection.Add(new JsonStringValue("PROTOCOL_ID", "PING")); msg.push(collection.ToString()); this.send(msg); if (SocketExtensions.IsConnected(this.socket)) { Console.WriteLine("true"); } else { StateObj.TimerReference.Change(Timeout.Infinite, Timeout.Infinite); //Change Console.WriteLine("false(("); } }
private void TimerTask(object StateObj) { StateObjClass State = (StateObjClass)StateObj; System.Threading.Interlocked.Increment(ref State.SomeValue); System.Diagnostics.Debug.WriteLine("Launched new thread " + DateTime.Now.ToString()); if (State.TimerCanceled) { State.TimerReference.Dispose(); System.Diagnostics.Debug.WriteLine("Done " + DateTime.Now.ToString()); } }