是否存在System.Threading.SynchronizationContext.Current.PostAsyn
本文关键字:Current PostAsyn SynchronizationContext Threading 存在 System 是否 | 更新日期: 2023-09-27 18:07:21
我可以像这样返回任何东西给UI线程:
// when I am on the UI thread
var _UI = System.Threading.SynchronizationContext.Current;
// then on a background thread
_UI.Post((x) => { DoSomething(); }, null);
但是,如果我在后台线程为使它异步,然后调用_UI.Post()将撤消我的努力和使UI等待为DoSomething()的执行。
当然_UI.PostAsync()是伪代码。但是是否有一种方法可以在UI线程上执行,但以异步方式?从根本上说,我意识到我暴露了我的知识和理解的缺乏。请仁慈一点。我只是问问;)
SynchronizationContext.Post()不会阻塞后台线程,因为它会异步地"post "回UI线程(在本例中)。
UI线程将只阻塞DoSomething()
调用的持续时间-但在这种情况下,你说你必须在UI线程上运行,在这种情况下,它将占用UI线程。
这里的关键是将大部分工作放在后台线程上,并且仅在直接设置用户界面的操作时调用.Post(...)
。因此,它们应该是非常快速的操作,并且永远不会(明显地)阻塞UI。