a.t*_*aby 0 c# multithreading revit-api
对于Revit插件,我编写了以下代码:
public Result Execute(ExternalCommandData commandData,
ref string message, ElementSet elements)
{
try
{
Global.GetInstance(commandData);
message = "Studio Launcher";
var mw = new MainWindow();
mw.ShowDialg();
}
catch (Exception)
{
TaskDialog.Show("Failure", "Please Open or Create a document");
return Result.Failed;
}
return Result.Succeeded;
}
Run Code Online (Sandbox Code Playgroud)
在这个插件中MainWindow有一个用户界面,用户可以与之交互,并且一些交易在那里发生。
它很有魅力,但形式不是无模式的,因为插件与其Revit本身位于同一线程中。为了提供无模式窗口,我将其更改mw.ShowDialg();为mw.Show();. 尽管插件成功启动并且 MainWindow 变为无模式并且用户能够同时与插件和 Revit 交互,但当我在 MainWindow 中打开事务时,Revit 崩溃,因为 Execute() 方法在打开该事务之前终止。
如果有任何方法可以为 Revit 开发多线程插件,请帮助我。
有关该主题的详细讨论列表,请参阅Building Coder 博客。如果您希望能够拥有一个无模式对话框,那么可以使用外部事件或空闲事件。但是,如果您希望同时运行多个线程,那么您就不走运了,因为 Revit API 不允许这样做。
| 归档时间: |
|
| 查看次数: |
1861 次 |
| 最近记录: |