可以在 foreach 循环内引发外部事件吗?

it is possible to raise external event inside foreach loop?

我正在尝试更新外部事件中的参数并显示更新
在 Revit 中输入参数

有没有什么方法可以执行这个操作

提前致谢..

您可以在循环中引发外部事件。 但 Revit 将决定何时调用外部事件处理程序。在您的 LOOP 完成后一定要过一段时间。 假设您循环 100 次,这意味着您引发 100 次外部事件(它们可以是同一事件,也可以是完全不同的事件)。然后你循环结束,然后是循环结束后的所有剩余代码,无论如何你的代码都会结束。程序主控制返回给 Revit 后,Revit 将迅速决定依次调用所有 100 个事件处理程序,与您调用它们的顺序相同。 有道理吗?

是的,这是很有可能的,但是如果您在每个循环中都更改变量,那么您的 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); 
            }
        }