可以在 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);
}
}
我正在尝试更新外部事件中的参数并显示更新
在 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);
}
}