c# - 在主线程上执行 Task.Run

标签 c# ios xamarin.ios async-await task-parallel-library

我正在为 iOS 应用程序使用 monotouch/Xamarin。

Task.Run 的文档状态:

Queues the specified work to run on the ThreadPool and returns a task handle for that work.

这实质上表明它可以在任何线程 ThreadPool 上运行。

我想做这样的事情:

Task.Run(async () => await PerformTask());

但让它在主线程上运行。通常我会用 BeginInvokeOnMainThread 来写它如下:

BeginInvokeOnMainThread(async () => await PerformTask());

但我在共享代码中执行此操作,不想使用 iOS 特定调用。有没有办法让我告诉 Task.Run() 在主线程上调用操作?

最佳答案

如果您想在当前线程而不是线程池线程中运行 PerformTask,您只需调用Task.Run。只需使用:

PerformTask();

你就完成了。如果您只想在该任务完成后继续执行该方法的其余部分,则 await 它:

await PerformTask();

没有理由在这里为您调用Task.Run,也没有任何理由创建一个没有特殊原因等待方法的lambda(您可以如果您想从线程池线程启动它,只需直接调用它即可。

关于c# - 在主线程上执行 Task.Run,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814461/

相关文章:

c# - 替换声明 block 为空的 CSS 规则集

ios - 使用 SwiftyDropbox 创建指向文件的共享链接

ios - 错误 : The specified provisioning profile could not be found

c# - iOS 上的 MonoGame 和 MonoTouch - 横向

c# - Dictionary<string,object> 是将未知变量集合传递给构造函数的最佳方式吗?

c# - C#中的正则表达式来检测单词之间的多个空格

c# - 如何在 .net 中找到当前线程的最大堆栈大小?

ios - 用户终止应用程序时的 iBeacon 通知(通过在任务 View 中向上滑动)

ios - 我需要使用单例访问本地数据库的代码审查

ios - 无法将Apple帐户添加到Visual Studio 2017