【发布时间】:2015-11-23 09:20:35
【问题描述】:
InstallIfNeeded method 的 WindowsFormsSynchronizationContext 类,在 try 块中:
SynchronizationContext currentContext = AsyncOperationManager.SynchronizationContext;
//Make sure we either have no [....] context
//or that we have one of type SynchronizationContext
if (currentContext == null || currentContext.GetType() == typeof(SynchronizationContext))
{
...
首先,调用AsyncOperationManager.SynchronizationContext getter,并检查其返回值是否为空。这里需要检查 null 吗?
AsyncOperationManager.SynchronizationContext 的代码如下。它首先检查当前同步上下文是否为空,如果是,则创建一个新的。所以可能这个 getter 永远不会返回 null。
public static SynchronizationContext SynchronizationContext
{
get
{
if (SynchronizationContext.Current == null)
{
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
}
return SynchronizationContext.Current;
}
【问题讨论】:
-
该评论是无用评论的完美示例。它与代码已经明确指定的内容相呼应。
-
@usr 它检查
AsyncOperationManager.SynchronizationContext(这是第二个代码 sn-p)。检查它的返回值是否为空,如果它返回SynchronizationContext.Current,那么它确实检查SynchronizationContext.Current是否为空。
标签: c# multithreading