我正在为 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/