
完美的候选者将是dispatcherSynchronizationContext(SynchronizationContext的WPF实现),它在内部持有对dispatcher的引用,dispatcher引用与之关联的线程,但遗憾的是该字段是私有的,因此我无法访问它.
解决方法 虽然通常只有1个UI线程,但可以有很多UI线程.对于WPF和WinForms都是如此.我发现实现这一目标的最好方法是使用SynchronizationContext. WPF和WinForms都将在他们运行UI的任何线程上建立SynchronizationContext.如果我没有绑定任何特定的UI模型,这是我使用的功能.
public bool IsPossiblyUIThread() { return SynchronizationContext.Current != null;} 请注意,它绝不是万无一失的.非UI组件可以建立SynchronizationContext,对于简单的工作线程,这将返回true.因此,非权威的名称.
稍微更可靠的方法如下.但它要求您至少引用WPF的一部分来实现.
public bool IslikelyWpfUIThread() { var context = SynchronizationContext.Current; return context != null && context is dispatcherSynchronizationContext;} 总结 以上是内存溢出为你收集整理的c# – 如何以分离的方式找出方法是否在UI线程上执行?全部内容,希望文章能够帮你解决c# – 如何以分离的方式找出方法是否在UI线程上执行?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)