MonoTouch 6.0中尚未提供C#异步等待功能。在那之前,在MonoTouch中实现异步任务的最佳方法是什么。
MonoTouch文档建议从System.Threading命名空间进行线程化以创建响应式UI。但是一旦后台工作线程正在进行,如果需要很长时间我如何取消它呢?我是否需要实现一个60秒的计时器并在计时器事件触发时终止线程?
有更好的选择吗?
任何帮助高度赞赏
由于
答案 0 :(得分:3)
使用线程是一个不错的选择。但是,最好不要直接从外部终止(中止)线程。相反,在线程中运行的代码应定期检查标志,如果标志为true,则它应该提前返回。
MSDN上有一个很棒的演练和示例:
答案 1 :(得分:2)
我不确定Mono目前有多少CLR,但对于后台任务,这是我的列表,most-recommended first (full details on the rankings can be found on my blog):
Task
BackgroundWorker
Delegate.BeginInvoke
ThreadPool.QueueUserWorkItem
Thread
对于“取消标志”,我建议其中一个:
CancellationToken
- 黄金标准。如果可用,请使用此选项。ManualResetEvent
volatile bool
取消本质上是合作的,因此取消方发送取消通知,接收方必须定期检查。