SynchronizationContext.Current
为空,我很难搞清楚这个。
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
var ctx = System.Threading.SynchronizationContext.Current;
// ctx is null here
}
}
我在.NET 4.6.1上运行。它是一个混合的Winforms和WPF应用程序。入门点是WinForms。以下是此类证据的截图:
它与this之类的帖子无关,因为我使用的是较新的.NET版本,而且似乎提到的问题已经修补了。还有其他好主意吗?
答案 0 :(得分:3)
当您的应用程序的入口点(SynchronizationContext
)被点击时,当然没有Main
可用。您需要等待框架初始化它。
在Windows窗体应用程序中,这会在创建第一个窗体时发生。因此,只有在调用Application.Run
方法之后,SynchronizationContext.Current
属性才会实际返回同步上下文。