我有一个泛型方法,它初始化类型为T(WinRT)的对象的同步线程。在这个同步线程中,每当一个对象被同步时我都会调用一个委托处理程序,所以代码看起来像这样:
foreach (var e in updatedEntities)
{
if (mHandlers.ContainsKey(typeof(T)))
{
mHandlers[typeof(T)].DynamicInvoke(e);
}
}
firstUpdate[typeof(T)] = true;
现在我的应用程序正常工作,我需要等待所有firstUpdate值为true(默认情况下它们被初始化为false)。
我的问题是即使处理程序采用格式化:
public void EntityUpdated(SyncedDatatypes.MyEntityType entity)
DynamicInvoke似乎在一个单独的线程中运行,因为在完成DynamicInvoke后面的委托之前,firstUpdate设置为true。
因为它不是任务也不是异步方法,所以我对这种行为感到困惑。如何确保我的所有处理程序都被调用过一次?即我如何“等待”DynamicInvoke?