Sql server SQL Server异步执行?

Sql server SQL Server异步执行?,sql-server,ado.net,asynchronous,Sql Server,Ado.net,Asynchronous,我正在寻找一种方法,让我的C#(4.0)应用程序异步向SQL Server 2008实例发送数据。我有点喜欢我在那里看到的,但那不是我想要的 我有这样的代码: // myDataTable is a .NET DataTable object SqlCommand sc= new SqlCommand("dbo.ExtBegin", conn); SqlParameter param1 = sc.Parameters.AddWithValue("@param1", "a"); SqlParame

我正在寻找一种方法,让我的C#(4.0)应用程序异步向SQL Server 2008实例发送数据。我有点喜欢我在那里看到的,但那不是我想要的

我有这样的代码:

// myDataTable is a .NET DataTable object
SqlCommand sc= new SqlCommand("dbo.ExtBegin", conn);
SqlParameter param1 = sc.Parameters.AddWithValue("@param1", "a");
SqlParameter param2 = sc.Parameters.AddWithValue("@param2", "b");
SqlParameter param3 = sc.Parameters.AddWithValue("@param3", myDataTable);
param3.SqlDbType = SqlDbType.Structured;
param3.TypeName = "dbo.MyTableType";
int execState = sc.ExecuteNonQuery();
由于myDataTable可能很大,我不希望console应用程序在向服务器发送数据时挂起,如果有6个大负载,我希望它们同时运行,而不会在console应用程序上阻塞。我不想连续发送


所有想法都很感激,谢谢

创建一个线程并在该线程内执行查询,确保不会有后续的数据库调用导致争用条件。

我的第一个想法是为插入生成一个新线程,并让主线程使用AutoResetEvent、TimerCallback和Timer对象检查生成的线程的执行情况

我一直在Silverlight中使用它。

看看如何使用它。这将允许您调用存储的proc,并让它在自己的线程上运行—为什么要在当前线程上继续

这就是如何做到这一点。

  • 将连接字符串的属性设置为True
  • 使用

但是
dbo.ExtBegin
在做什么?这完全取决于它,因为调用可能会在数据库中的锁上序列化(最好),或者,如果过程没有正确地设计为一致性,那么最坏的情况下,您可能会得到不正确的结果。

谢谢,我想您刚才给了我websearch的正确单词组合。我还将研究DB端,看看它是否能够在其接收存储过程中处理并发调用。由于额外的服务器配置开销,ServiceBroker已退出。我不想添加自定义线程代码,我想BeginExecutenQuery可能会帮我。谢谢