是否有可能在foreach循环内引发外部事件?

时间:2019-11-27 12:02:17

标签: c# revit-api

我正在尝试在外部事件中更新参数并显示更新
在revit类型参数中

enter image description here

是否有执行此操作的方法

提前谢谢..

2 个答案:

答案 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); 
            }
        }