def execute
      @thread = Thread.new do
        if Thread.current != Thread.main
          loop do
            @datasource.monitor.on_trigger do
              @datasource.action.activate(@datasource.action_options)
            end
          end
        end
      end
    end
def execute
      @thread = Thread.new do
        if Thread.current != Thread.main
          loop do
            @datasource.monitor.on_trigger do
              @datasource.action.activate(@datasource.action_options)
            end
          end
        end
      end
    end
Create a new command object from a data source
 @param datasource [CommandDataSource] The data source to use to initialize
 command object
 Begins executing the command by starting the monitor specified in
 the data source - will return immediately