为什么我的 Winforms 应用程序中的 SynchronizationContext.Current 为 null?

发布于 2024-08-10 12:05:12 字数 221 浏览 3 评论 0原文

我刚刚写了这段代码:

System.Threading.SynchronizationContext.Current.Post(
    state => DoUpdateInUIThread((Abc)state), 
    abc);

但 System.Threading.SynchronizationContext.Current 为 null

I just wrote this code:

System.Threading.SynchronizationContext.Current.Post(
    state => DoUpdateInUIThread((Abc)state), 
    abc);

but System.Threading.SynchronizationContext.Current is null

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

画▽骨i 2024-08-17 12:05:12

为了让它发挥作用。

在你的类中

private SynchronizationContext synchronizationContext;

UI线程(主线程)中

synchronizationContext = System.Threading.SynchronizationContext.Current;

在工作线程中

synchronizationContext.Post(    
   state => DoUpdateInUIThread((Abc)state),     
   abc);

To get it to work.

In your class

private SynchronizationContext synchronizationContext;

In the UI thread (main thread)

synchronizationContext = System.Threading.SynchronizationContext.Current;

In the worker thread

synchronizationContext.Post(    
   state => DoUpdateInUIThread((Abc)state),     
   abc);
方圜几里 2024-08-17 12:05:12

请参阅此说明

SynchronizationContext.Current 仅在主线程中设置(这是您实际上不需要它的唯一线程)

该博客文章提出了一种解决方法。

See this explanation.

SynchronizationContext.Current is only set in the main thread (which is the only thread where you don't actually need it)

The blog post proposes a workaround.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文