2

MonoTouch 6.0 中尚不提供 C# 异步等待功能。在那之前,在 MonoTouch 中实现异步任务的最佳方式是什么。

MonoTouch 文档建议使用 System.Threading 命名空间中的线程来创建响应式 UI。但是一旦后台工作线程开始运行,如果需要很长时间,我该如何取消它?我是否需要实现一个定时器说 60 秒并在定时器事件触发时终止线程?

有更好的选择吗?

任何帮助高度赞赏

谢谢

4

2 回答 2

3

使用线程是一个不错的选择。但是,最好不要直接从外部终止(中止)线程。相反,在线程中运行的代码应该定期检查标志,如果标志设置为真,那么它应该提前返回。

MSDN上有一个很好的演练和示例:

如何:创建和终止线程

于 2012-12-14T01:31:25.737 回答
2

目前我不确定 Mono 对 CLR 有多少,但对于后台任务,这是我的列表,首先是最推荐的(有关排名的详细信息可以在我的博客上找到)

  1. Task
  2. BackgroundWorker
  3. Delegate.BeginInvoke
  4. ThreadPool.QueueUserWorkItem
  5. Thread

对于“取消标志”,我推荐其中之一:

  1. CancellationToken- 黄金标准。如果可用,请使用它。
  2. ManualResetEvent
  3. volatile bool

取消是合作性质的,所以取消方发送取消通知,接收方必须定期检查。

于 2012-12-14T02:11:06.997 回答