C#:任务。在主线程上运行execute
我在iOS应用程序中使用monotouch/Xamarin 各国的文件: 对要在线程池上运行的指定工作进行排队,并返回任务 负责那项工作 这本质上表明它可以在任何线程C#:任务。在主线程上运行execute,c#,ios,xamarin.ios,async-await,task-parallel-library,C#,Ios,Xamarin.ios,Async Await,Task Parallel Library,我在iOS应用程序中使用monotouch/Xamarin 各国的文件: 对要在线程池上运行的指定工作进行排队,并返回任务 负责那项工作 这本质上表明它可以在任何线程ThreadPool上运行 我想做一些类似的事情: Task.Run(async () => await PerformTask()); 但是让它在主线程上运行。通常情况下,我会使用以下方法编写: BeginInvokeOnMainThread(async () => await PerformTask()); 但我
ThreadPool
上运行
我想做一些类似的事情:
Task.Run(async () => await PerformTask());
但是让它在主线程上运行。通常情况下,我会使用以下方法编写:
BeginInvokeOnMainThread(async () => await PerformTask());
但我在共享代码中这样做,不想使用特定于iOS的调用。有没有办法告诉Task.Run()调用主线程上的操作?如果要在当前线程中运行
PerformTask
,而不是线程池线程,只需不调用Task.Run
。只需使用:
PerformTask();
你完成了。如果只想在该任务完成后继续执行该方法的其余部分,则wait
it:
await PerformTask();
没有理由调用
任务。在此处为您运行,也没有理由创建一个lambda,无特殊原因地等待该方法(如果您想从线程池线程启动它,可以直接调用它)。查看MainQueue.cs:
它适用于Xamarin表单应用程序。您必须从主线程调用一次Init(),然后才能确保在主线程上执行。当前正在执行的代码是否在主线程中?@Servy,在我当前的上下文中,可以安全地做出这样的假设。但如果有更一般的答案,我也希望如此。