more G-Labs products

Author Topic: How to call async program.  (Read 600 times)

May 09, 2016, 04:56:01 PM
Read 600 times

LotusV

  • *
  • Information
  • Newbie
  • Posts: 2
I have scenarios for turning toilet fan after 2 minute if toilet light is on. That is my code
Code: [Select]
When.ModuleParameterChanged( (module, parameter) =>
        {   
         
          switch (module.Instance.Address)
          {
            case "D1":
              //...
              break;
            case "D5":
              //...
              break;
           
            case "A1":
              //...
              break;
            case "A2":
              if(parameter.Is("Status.Level") && parameter.Value == "1" && parameter.Statistics.Last.Value == 0)
              {
               
                var x10B2 = Modules.InDomain("HomeAutomation.X10").WithAddress("B2"); 
                Thread.Sleep(120000);
                x10B2.On();
                return false;
              }
              break;
            default:
            break;
          }
          return true;
        });
Program.GoBackground();
In this case the program will sleep for 2 minute, how run wait and B2 on async without stopping program?

May 09, 2016, 07:21:49 PM
Reply #1

LotusV

  • *
  • Information
  • Newbie
  • Posts: 2
Ok, I found solution.       
Code: [Select]
Program.RunAsyncTask(()=>{
  if(parameter.Is("Status.Level") && parameter.Value == "1" && parameter.Statistics.Last.Value == 0)
                {
                   Pause(2);
                  var x10B1 = Modules.InDomain("HomeAutomation.X10").WithAddress("B1"); 
                  //Thread.Sleep(120000);
                  x10B1.On();
                }
                });