Salut a tours les pro du c#

J'ai besoin de votre conseille a propos de l’accès concourent a la base de données par mon application.

Bref, j'ai une application qui interagie avec une base, et qui contient plusieurs Thread (en ce moment il y'a 4, 2 qui interagie avec un appareille et les deux autre avec la base de donnée, 1 qui démarre avec l'application et l'autre lors de l'ouverture d'un formulaire)

Je m'attendais d'avoir un problème d'accès concourent es ce que c'est vrai ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
ExecuteReader requires an open and available Connection. The connection's current state is connecting.
 
System.InvalidOperationException was unhandled
  Message=ExecuteReader requires an open and available Connection. The connection's current state is connecting.
  Source=System.Data
  StackTrace:
       at System.Data.SqlClient.SqlConnection.GetOpenConnection(String method)
       at System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command)
       at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)
       at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
       at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
       at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
       at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
       at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
       at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
       at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
       at HPR.BDDataSetTableAdapters.R_LATableAdapter.GetData() in D:\HPR\HPR\HPR\HPR\BDHPDataSet.Designer.cs:line 16688
       at HPR.FRM_GR.Refrech_DGV_LA() in D:\HPR\HPR\HPR\HPR\FRM_GR.cs:line 73
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:

Pour votre info j'ai utilisé un MUTEX pour géré les accès a l'appareille, et je me demande si je doit aussi le faire a la base de donnée si oui alors svp y'a pas un moyen plus rapide que le mètre avant chaque "insert" ou un "select" sachant que j'utlise les "TableAdapter".


Bref une dernière question si c'est possible, le meilleur moyen d'afficher l'état d'une table en temps réel sur un "DataGridView", pour le moment j'ai mit un thread qui actualiser l'affichage.

Merci de votre attention et svp n'importe quel indication est la bienvenue n'hésitez pas svp.