Hi Neil,
I followed your suggestion, I wrap StartEditing in a Try/Catch block:
  try
      {
         pWorkspaceEdit.StartEditing(true);
         pWorkspaceEdit.StartEditOperation();
         .........
         .........
       }                    
  catch (Exception ex)
       {
         MessageBox.Show("The workspace is locked by another user");
                    pWorkspaceEdit.UndoEditOperation();
         }
Would be useful to capture UserName and MachineName of the user has just strated the editing.
The exception message has this information, infact the original message is: Can not lock. The table "GDB_DatabaseLocks" is currently used by the user "Admin" on machine "PC5".
How can I get this fields from the table, if the table is locks?