In Win10, the 'for' loop repeatedly calls the Insert3DSketch software and crashes.


           SldWorks swApp = Utility.ConnectToSolidWorks();
           if (swApp == null) return;

           ModelDoc2 swModelDoc = (ModelDoc2)swApp.ActiveDoc;
           if (swModelDoc == null) return;

           try
           {
               // 获取接口
               ModelView activeView = swModelDoc.IActiveView;
               FeatureManager featMgr = swModelDoc.FeatureManager;
               SketchManager sketchMgr = swModelDoc.SketchManager;

               // 保存原始设置
               bool originalGraphicsUpdate = activeView.EnableGraphicsUpdate;
               bool originalFeatureTree = featMgr.EnableFeatureTree;
               bool originalFeatureTreeWindow = featMgr.EnableFeatureTreeWindow;
               bool originalAutoSolve = sketchMgr.AutoSolve;
               bool originalAddToDB = sketchMgr.AddToDB;
               bool originalDisplayWhenAdded = sketchMgr.DisplayWhenAdded;

               // 优化性能设置
               swApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAutomaticDrawingViewUpdate, false);
               activeView.EnableGraphicsUpdate = false;
               featMgr.EnableFeatureTree = false;
               featMgr.EnableFeatureTreeWindow = false;
               sketchMgr.AutoSolve = false;
               sketchMgr.AddToDB = true;
               sketchMgr.DisplayWhenAdded = false;

               const int BATCH_SIZE = 25; // 减小批量大小,增加稳定性
               const int TOTAL_ITERATIONS = 1000;
               int i = 0;

               while (i < TOTAL_ITERATIONS)
               {
                   // 创建新的3D草图
                   sketchMgr.Insert3DSketch(false);
                   if (sketchMgr.ActiveSketch == null)
                   {
                       MessageBox.Show(\$"第 {i} 次创建3D草图失败");
                       break;
                   }

                   // 计算坐标
                   double number1 = i / 100.0;
                   double j = (i + 500) / 100.0;

                   // 创建单条线段
                   SketchSegment s = sketchMgr.CreateLine(number1, number1, number1, j, j, j);
                   if (s == null)
                   {
                       MessageBox.Show(\$"第 {i} 次创建线段失败");
                       sketchMgr.Insert3DSketch(false);
                       break;
                   }

                   // 关闭当前草图
                   sketchMgr.Insert3DSketch(false);

                   i++;

                   // 更频繁地重建并释放资源
                   if (i % BATCH_SIZE == 0 || i == TOTAL_ITERATIONS)
                   {
                       swModelDoc.EditRebuild3();
                       Marshal.ReleaseComObject(s); // 释放线段对象
                       System.GC.Collect(); // 强制垃圾回收,减少内存占用
                   }
               }

               // 恢复设置并最后重建
               sketchMgr.AddToDB = originalAddToDB;
               sketchMgr.DisplayWhenAdded = originalDisplayWhenAdded;
               sketchMgr.AutoSolve = originalAutoSolve;
               activeView.EnableGraphicsUpdate = originalGraphicsUpdate;
               featMgr.EnableFeatureTree = originalFeatureTree;
               featMgr.EnableFeatureTreeWindow = originalFeatureTreeWindow;
               swApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAutomaticDrawingViewUpdate, true);

               swModelDoc.EditRebuild3();
           }
           catch (Exception ex)
           {
               MessageBox.Show(\$"发生错误: {ex.Message}");
           }
           finally
           {
               // 确保恢复设置并清理
               if (swModelDoc != null)
               {
                   ModelView activeView = swModelDoc.IActiveView;
                   FeatureManager featMgr = swModelDoc.FeatureManager;
                   SketchManager sketchMgr = swModelDoc.SketchManager;

                   activeView.EnableGraphicsUpdate = true;
                   featMgr.EnableFeatureTree = true;
                   featMgr.EnableFeatureTreeWindow = true;
                   sketchMgr.AutoSolve = true;
                   sketchMgr.AddToDB = false;
                   sketchMgr.DisplayWhenAdded = true;
                   swApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAutomaticDrawingViewUpdate, true);

                   // 释放COM对象
                   Marshal.ReleaseComObject(sketchMgr);
                   Marshal.ReleaseComObject(featMgr);
                   Marshal.ReleaseComObject(activeView);
                   Marshal.ReleaseComObject(swModelDoc);
                   Marshal.ReleaseComObject(swApp);
                   System.GC.Collect();
                   System.GC.WaitForPendingFinalizers();
               }
           }