API 不正式支持线程(见下文)或关闭活动文档的方法。也就是说,关闭活动文档的解决方法是调用...
SendKeys.SendWait("^{F4}");
...来自一个单独的线程。这很好用,除了我需要循环打开和关闭几个文档。如果我在线程之后放置任何代码,它将在关闭前一个文档之前运行它。我尝试了许多标准线程回调方法,包括...
Task.Factory.StartNew(() =>
ThreadPool.QueueUserWorkItem(new WaitCallback
AutoResetEvent.WaitOne()
没有运气。Thread.Sleep() 只是停止错误/崩溃。有没有人有任何想法。
“Revit 的内部仅在少数选定的隔离位置使用多处理。这些位置目前都不包含 Revit API 中的代码或其任何部分。因此 Autodesk 不建议从同时执行的内部对 Revit API 进行任何调用并行线程。可能是 Revit API 的某些部分足够隔离,以便能够在测试环境中从此类线程代码中成功执行;这不应被视为保证相同的源代码适用于任何模型或情况,或者 Revit 中的未来更改不会导致此代码停止运行。”
public void OpenFile()
{
for (int i = 0; i < 3; i++)
{
uiApp.OpenAndActivateDocument(TargetPath(i));
ThreadPool.QueueUserWorkItem(CloseDocProc);
//any code here at all opens the next doc without closing the last
}
}
public void CloseDocProc(object stateInfo)
{
SendKeys.SendWait("^{F4}");
//can run code here
}