MonoTouch 6.0 中尚不提供 C# 异步等待功能。在那之前,在 MonoTouch 中实现异步任务的最佳方式是什么。
MonoTouch 文档建议使用 System.Threading 命名空间中的线程来创建响应式 UI。但是一旦后台工作线程开始运行,如果需要很长时间,我该如何取消它?我是否需要实现一个定时器说 60 秒并在定时器事件触发时终止线程?
有更好的选择吗?
任何帮助高度赞赏
谢谢
MonoTouch 6.0 中尚不提供 C# 异步等待功能。在那之前,在 MonoTouch 中实现异步任务的最佳方式是什么。
MonoTouch 文档建议使用 System.Threading 命名空间中的线程来创建响应式 UI。但是一旦后台工作线程开始运行,如果需要很长时间,我该如何取消它?我是否需要实现一个定时器说 60 秒并在定时器事件触发时终止线程?
有更好的选择吗?
任何帮助高度赞赏
谢谢
使用线程是一个不错的选择。但是,最好不要直接从外部终止(中止)线程。相反,在线程中运行的代码应该定期检查标志,如果标志设置为真,那么它应该提前返回。
MSDN上有一个很好的演练和示例:
目前我不确定 Mono 对 CLR 有多少,但对于后台任务,这是我的列表,首先是最推荐的(有关排名的详细信息可以在我的博客上找到):
Task
BackgroundWorker
Delegate.BeginInvoke
ThreadPool.QueueUserWorkItem
Thread
对于“取消标志”,我推荐其中之一:
CancellationToken
- 黄金标准。如果可用,请使用它。ManualResetEvent
volatile bool
取消是合作性质的,所以取消方发送取消通知,接收方必须定期检查。