Example #1
0
    // CONSTRUTOR
    public DeviceMonitorSignaling()
    {
        CancelToken = new RulyCanceler();

        searchingHandle  = new AutoResetEvent(false);
        monitoringHandle = new AutoResetEvent(false);

        _monitoringThread = new Thread
                                (() =>
        {
            try { MonitorDeviceConnection(CancelToken); }
            catch (OperationCanceledException)
            {
                Console.WriteLine("Canceled Search!");
            }
        });

        _searchDeviceThread = new Thread(() =>
        {
            try { SearchDevices(CancelToken); }
            catch (OperationCanceledException)
            {
                Console.WriteLine("Canceled Monitor!");
            }
        });

        _monitoringThread.IsBackground = true;
    }
Example #2
0
    /// <summary>
    /// Once the device is detected
    /// </summary>
    /// <param name="cancelToken"></param>
    void MonitorDeviceConnection(RulyCanceler cancelToken)
    {
        monitoringHandle.WaitOne();
        Console.WriteLine("monitoring started.");

        while (_monitoring)
        {
            cancelToken.ThrowIfCancellationRequested();
            Thread.Sleep(1000);

            if (device == null)
            {
                Console.WriteLine("Disconnected Invoking search.");
                // Block monitoring thread and awake the device search.
                ToggleMonitoringMode();
            }
            else
            {
                bool responding = device.isConnected;
                Console.WriteLine("responding {0}", responding);
                if (!responding)
                {
                    Console.WriteLine("Not responding. Invoking search.");
                    device = null;
                    // Block monitoring thread and awake the device search.
                    ToggleMonitoringMode();
                }
            }
        }
    }
 static void Work (RulyCanceler c)
 {
   while (true)
   {
     c.ThrowIfCancellationRequested();
     // ...
     try      { OtherMethod (c); }
     finally  { /* any required cleanup */ }
   }
 }
 static void Work(RulyCanceler c)
 {
     while (true)
     {
         c.ThrowIfCancellationRequested();
         // ...
         try      { OtherMethod(c); }
         finally  { /* any required cleanup */ }
     }
 }
 static void Main()
 {
   var canceler = new RulyCanceler();
   new Thread (() => {
                       try { Work (canceler); }
                       catch (OperationCanceledException)
                       {
                         Console.WriteLine ("Canceled!");
                       }
                     }).Start();
   Thread.Sleep (1000);
   canceler.Cancel();               // Safely cancel worker.
 }
    static void Main()
    {
        var canceler = new RulyCanceler();

        new Thread(() => {
            try { Work(canceler); }
            catch (OperationCanceledException)
            {
                Console.WriteLine("Canceled!");
            }
        }).Start();
        Thread.Sleep(1000);
        canceler.Cancel();               // Safely cancel worker.
    }
Example #7
0
    /// <summary>
    /// Method to search the device.
    /// </summary>
    /// <param name="cancelToken"></param>
    void SearchDevices(RulyCanceler cancelToken)
    {
        while (_running)
        {
            cancelToken.ThrowIfCancellationRequested();
            Console.WriteLine("Searching devices....");
            Thread.Sleep(1000);
            device = new Device();     // may be some logic to detect the device.

            Console.WriteLine("Finished!!! Searching devices. Start monitoring.");

            if (device != null)
            {
                // Block the search thread and start the monitoring thread.
                ToggleMonitoringMode();
            }
        }
    }
 static void OtherMethod (RulyCanceler c)
 {
   // Do stuff...
   c.ThrowIfCancellationRequested();
 }
 static void OtherMethod(RulyCanceler c)
 {
     // Do stuff...
     c.ThrowIfCancellationRequested();
 }