【发布时间】:2016-10-19 00:17:57
【问题描述】:
问题
我重写了 Xamarin Android 中的 bool OnContextItemSelected(IMenuItem item) 方法以捕获用户单击上下文菜单的时间。
当用户点击菜单中的特定项目时,我会调用网络服务来删除与点击的行相关的一些信息。
我想在不阻塞 UI 线程的情况下删除信息,但仍然可以控制执行。你有什么想法?任何任务黑魔法? :-)
约束
1) 我不能在 OnContextItemSelected 中使用 async 关键字,因为它会将返回类型从 bool 更改为 Task
2) webservice 调用不应阻塞 UI 线程。
尝试的解决方案
1) 将返回类型更改为 Task 并以某种方式仍然覆盖该方法。
2) 使用Task task = Task.Run(async () => ....) 然后Task.Wait()
3) 无需等待即可使用 Task task = Task.Run(async () => ... )。我在工作,但我无法控制任务何时完成。
示例代码
public override bool OnContextItemSelected(IMenuItem item)
{
if (item.ItemId == Resource.Id.delete)
{
...
//Call webservice without blocking the UI thread
}
}
【问题讨论】:
标签: c# android asynchronous xamarin task