【发布时间】:2016-05-22 12:04:30
【问题描述】:
我在 Solidworks 插件中有一些函数调用 VBA 宏(通过 runMacro2 方法),一位同事在过去几周一直在处理这些函数。在他的代码中,他调用了一个 Solidworks 函数,该函数在某些未知条件下会挂起很长一段时间。多长时间似乎取决于零件中物体的大小和数量。考虑到我们想要从 i 自动运行它的至少一个功能,这不会做。
我尝试过使用 Thread.Join(int) 方法(如下所示),但它不起作用。我还尝试从这个答案Close a MessageBox after several seconds 修改代码,结果相同。有什么我可以在 C# 或 VBA 中做的事情来处理这个超时而不重写他的整个宏?
public void runBB()
{
Stopwatch testStop = new Stopwatch();
Thread workerThread = new Thread(bbRun);
testStop.Start();
workerThread.Start();
if (!workerThread.Join(50))
{
workerThread.Abort();
testStop.Stop();
MessageBox.Show("Unable to generate Bounding Box after " + testStop.ElapsedMilliseconds/1000 + " seconds. Please enter data manually.", "Solidworks Derped Error.");
}
return;
}//Still uses Macro (2-5-16)
public static void bbRun()
{
iSwApp.RunMacro2(macroPath + "BOUNDING_BOX.swp", "test11", "main", 0, out runMacroError);
return;
}
【问题讨论】:
标签: c# vba timeout solidworks