I am not a C# guru, but do like playing around with anything SQL server related.
To me, you are locking the ADO data table in memory. Since you did not post the rest of the code, I can not tell if this is associated with a SQL Server table or not. I bet you it is.
The message is stating that the under lying data has been modified.
Is one bulk copy process stepping on another?
Check out the entry from ConcernedOfTunbridgeWells for a good coding style -
Best Practices for uploading files to database
My main question is why are you doing it every 10 secs?
At that frequency, some things come to mind.
1 - Are you using a staging table w/o indexes and integrity. Rebuilding indexes if the data size is large will take time.
2 - What is the underlying SqlBulkCopy class doing for locks. TABLOCK may cause blocking at this rate.
If you have sysadmin access to the database, here are some simple commands to look at the locks.
--
-- Locked object details
--
-- Old school technique
EXEC sp_lock
GO
-- Lock details
SELECT
resource_type, resource_associated_entity_id,
request_status, request_mode,request_session_id,
resource_description
FROM sys.dm_tran_locks
WHERE resource_database_id = DB_ID('AdventureWorks2012')
GO
-- Page/Key details
SELECT object_name(object_id) as object_nm, *
FROM sys.partitions
WHERE hobt_id = 72057594047037440
GO
-- Object details
SELECT object_name(1266103551)
GO
A Tech Next snippet on Bulk Copy.
http://technet.microsoft.com/en-us/library/ms130809.aspx
TABLOCK: A table-level lock is acquired for the duration of the bulk copy operation. This option significantly improves performance because holding a lock only for the duration of the bulk copy operation reduces lock contention on the table. A table can be loaded by multiple clients concurrently if the table has no indexes and TABLOCK is specified. By default, the locking behavior is determined by the table option table lock on bulk load.
In summary, try increasing the time between BULK COPY operations. See if the error goes away.