Modal Operator that is mapped to a value
Using Update
For this example I've used the modal timer operator available in the templates &gt; python menu of the text editor.
Around line 16 add this bit, I've used an operator named CSharpen (from a prev answer to test, change to suit the operator you want to &quot;go modal&quot; from.
    if event.type == 'TIMER':
        print(&quot;timer&quot;)
        op = context.active_operator
        if op is None:
            self.cancel(context)
            return {'CANCELLED'} 

        if op.name == 'CSharpen':
            op.angle += 0.001
            if not op.run_modal:
                #stop it
                self.cancel(context)
                return {'CANCELLED'} 

Leaving in the bg color change lets you know it's running, as well as the angle value of your operator changing.  Change the events to suit your needs.
In your operator set up an update function
class sharpenOperator(bpy.types.Operator):
    '''ToolTip'''
    
    def go_modal(self, context):
        if self.run_modal:
            bpy.ops.wm.modal_timer_operator()

and a property to turn on the modal timer
run_modal = BoolProperty(update=go_modal)

and in the draw
    box.row().prop(self, &quot;run_modal&quot;)