【发布时间】:2016-08-04 20:42:46
【问题描述】:
我有很多数据表要批量插入到数据库表中 由于尺寸较大,一张表需要 5 分钟才能完成插入。 2张桌子花了我10分钟
static void Main(string[] args)
{
DataTableBulkInsert(DataTable1);
DataTableBulkInsert(DataTable2);
}
public static void DataTableBulkInsert(DataTable Table){
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(myConnection);
sqlBulkCopy.DestinationTableName = "dbo.DatabaseTable";
myConnection.Open();
sqlBulkCopy.WriteToServer(Table);
myConnection.Close();
}
我现在正在尝试为批量插入执行异步操作,但既没有插入任何数据也没有给我错误。如何捕获异常?
static void Main(string[] args)
{
var insert1 = Task.Run(async () => await DataTableBulkInsert(DataTable1);
var insert2 = Task.Run(async () => await DataTableBulkInsert(DataTable2);
Task.WhenAll( insert1, insert 2);
}
public static async Task<Boolean> DataTableBulkInsert(DataTable Table)
{
try
{
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(myConnection);
sqlBulkCopy.DestinationTableName = "dbo.DatabaseTable";
myConnection.Open();
await sqlBulkCopy.WriteToServerAsync(Table);
myConnection.Close();
}
catch (Exception (e))
{
console.write(e);
}
return true;
}
【问题讨论】:
-
你试过在
console.write(e);线上设置调试器吗?根据我的经验,异步方法通常会吞下异常。 -
使用
Task.WaitAll(insert1, insert 2)
标签: c# asynchronous sqlbulkcopy