.Net Framework具有在TPL
库之前编写的类,其中一个方法启动异步操作(不返回Task
),另一个方法取消它。
创建类的对象并在一个线程中启动异步操作是否安全,有时后来调用从另一个线程(或线程池)取消操作的方法?
具体示例:来自SpeechRecognitionEngine
的班级System.Speech.Recognition
具有启动异步语音识别会话的方法RecognizeAsync
。要取消它,请致电RecognizeAsyncCancel
。方法RecognizeAsyncCancel
本身就是同步的。返回大约需要300毫秒。如果我从线程池中调用它以避免阻止UI,如下所示:
Task t = Task.Run(() => MySpeechEngine.RecognizeAsyncCancel());