1 Reply Latest reply on Aug 5, 2010 4:19 PM by Lee CS Young

    PDME API ComException unhandled on Checkout (LockFile)

    Kent Keller

      On executing File.LockFile(FolderID, 0), in a large batch, sometimes my automation is interupted by what seems to be a totally bogus error:


      System.Runtime.InteropServices.COMException was unhandled
        HelpLink="C:\Program Files\SolidWorks Enterprise PDM\api_gb.chm"
        Message="The Archive Server could not find the file with the specified ID."
        Source="SolidWorks Enterprise PDM"
             at EdmLib.IEdmFile8.LockFile(Int32 lParentFolderID, Int32 lParentWnd, Int32 lEdmLockFlags)
             at PDMETools.CustomPDMEAPI.CheckoutFile(IEdmFile8 PDME_File, Int32 PDME_FolderID, DateTime datAddDate) in C:\KentsVSProjects\PDMETools\PDMETools\CustomPDMEAPI.vb:line 117
             at PDMETestConsoleApp.Module1.ImportToPDME() in C:\KentsVSProjects\PDMETools\PDMETestConsoleApp\Module1.vb:line 211
             at PDMETestConsoleApp.Module1.Main() in C:\KentsVSProjects\PDMETools\PDMETestConsoleApp\Module1.vb:line 36
             at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
             at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
             at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
             at System.Threading.ThreadHelper.ThreadStart()

      But, I already have a valid IEdmFile8 object with a name, ID, etc.

      Function CheckoutFile(ByVal PDME_File As IEdmFile8, ByVal PDME_FolderID As Integer, ByVal datAddDate As Date) As Integer
                  PDME_File.LockFile(PDME_FolderID, 0)
                  If Not PDME_File.IsLocked Then
                     PDME_File.LockFile(PDME_FolderID, 0) 'Error thrown here
                     Return 0
                  End If
              End Try
              Return 0
          End Function


      So, what is really happening?