在一个线程中启动异步操作,并从另一个线程中取消它

时间:2016-09-26 11:40:52

标签: c# .net multithreading thread-safety task-parallel-library

.Net Framework具有在TPL库之前编写的类,其中一个方法启动异步操作(不返回Task),另一个方法取消它。

创建类的对象并在一个线程中启动异步操作是否安全,有时后来调用从另一个线程(或线程池)取消操作的方法?

具体示例:来自SpeechRecognitionEngine的班级System.Speech.Recognition具有启动异步语音识别会话的方法RecognizeAsync。要取消它,请致电RecognizeAsyncCancel。方法RecognizeAsyncCancel本身就是同步的。返回大约需要300毫秒。如果我从线程池中调用它以避免阻止UI,如下所示:

Task t = Task.Run(() => MySpeechEngine.RecognizeAsyncCancel());

0 个答案:

没有答案