gpt4 book ai didi

c# - 运行数据库查询而不是等待结果

转载 作者:太空狗 更新时间:2023-10-29 20:20:31 24 4
gpt4 key购买 nike

我需要调用一个完成大量工作的存储过程。

我希望能够“触发并忘记”,例如,在移动到下一条记录之前不等待存储过程的响应,因为这会减慢速度,我需要快速移动。

在 C# 中调用存储过程并且不等待结果、返回成功状态然后移动到下一条记录的最佳方法是什么。

我希望能够快速循环遍历我的选择对象列表并调用一些执行数据库调用的方法,而无需在移动到循环中的下一个项目之前等待响应。

它使用 C# 4.5。

我正在考虑使用类似的东西

Parallel.ForEach(sqlRecordset.AsEnumerable(), recordsetRow =>
{
// get data for selection
// call DB to save without waiting for response / success/failure status
}

但我不知道这是否是最好的方法。

想法?

在此先感谢您的帮助。

最佳答案

Parallel.ForEach并行但同步 - 它将等待所有迭代完成。

您可以使用 TPL (Task Parallel Library)实现你想要的:

foreach (var recordsetRow_doNotUse in sqlRecordset.AsEnumerable())
{
var recordsetRow = recordsetRow_doNotUse;
Task.Run(() => {
Console.WriteLine(recordsetRow);
/* or do whatever you want with it here */
});
}

Task.Run 返回一个任务,因此如果您需要在所有任务完成后执行某些操作,您可以将所有任务放在一个数组中,然后使用 Task.WhenAll 获得一个任务,当所有迭代完成时,该任务将完成,不会阻塞任何线程。

附言我不知道你所说的 C# 4.5 是什么意思,可能是 .NET 4.5,也就是 C# 5。我上面的示例代码不适用于早期版本的 C#。

关于c# - 运行数据库查询而不是等待结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23610028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com