Need to generate PK value programatically in multi-threaded application
You could try this technique will single thread the inserts into this table, but should guarantee uniqueness.  Your C# code would need to do the following in a transaction.  Select the current max Id and hold the lock so other users will wait.  Add +1 to the Id and insert that row.  Commit the transaction

BEGIN TRANSACTION
select @Id = max(Id) from TestIdentity WITH (TABLOCKX,HOLDLOCK)
set @Id += 1
insert into TestIdentity... new row...
COMMIT