答案 0 :(得分:0)
您可以循环引发外部事件。 但是Revit将决定何时调用外部事件处理程序。并且您的LOOP完成之后还需要一段时间。 假设您循环100次,这意味着您引发了100次外部事件(它们可以是同一事件或完全不同的事件)。然后,您完成循环,然后在循环结束后其余所有代码都将完成。在程序主控件返回到Revit之后,Revit将迅速决定按您引发它们的相同顺序依次调用所有100个事件处理程序。 有道理吗?
答案 1 :(得分:0)
是的,这是很有可能的,但是如果您在每个循环中更改变量,那么您的IExternalEventHandler必须是ICloneable的,并且必须通过类似这样的特殊方法来调用:
aPublicAsyncMethod(ExternalEvent.Create(((_934_PRLoogle_Command06_EE15_CreateNewTags)myWindow2.my__934_PRLoogle_Command06_EE15_CreateNewTags.Clone())));
public async void aPublicAsyncMethod(ExternalEvent myExternalEvent)
{
myExternalEvent.Raise();
while (myExternalEvent.IsPending)
{
await System.Threading.Tasks.Task.Delay(200);
}
}