类提供接口,实现界面元素拾取,如何在接口内部做阻塞,又能保持鼠标,界面的响应

想封装套接口,来实现界面元素的拾取,比如提供一个capture方法,当用户调用后,把方法阻塞,并进行鼠标,操作,等点击完元素后,把点击的元素返回给接口,除了用form.showdialog进行阻塞,还有其他办法吗?
e
string capture()
{
Task.Run(()=>{

    //启动定时器,
    //捕捉鼠标位置
 //根据鼠标位置获取鼠标下的元素;
    });

    waitForm.ShowDialog();

    //等上一个线程拾取动作完成后,关闭waitform,代码走到这里,获取拾取的元素,并返回。
    return  result;

}
我就想问下,在winform中,既要阻塞方法的执行,又要让界面保持响应,还有其他实现方法吗?

 Task[] methodlist = new Task[] { Task.Run(() => { waitForm.ShowDialog();}) };
 Task.WhenAny(methodlist).ContinueWith((result)=>{
 return result;
 });

使用队列或者互斥量或者委托