c# - 在单独的线程中执行长时间操作是否安全?

标签 c# sql-server multithreading csv azure

我正在处理一个正在客户端导入的 CSV 文件。 该 CSV 应该包含一些信息,这些信息将用于在我公司数据库的一个表中执行更新。 我的 C# 函数处理该文件,查找错误,如果没有发现错误,它会发送一堆更新命令(文件通常从 50 行到 100000 行不等)。 到目前为止,我在同一个线程中执行更新来执行更新(逐行),但速度有点慢,具体取决于文件,因此我选择将所有 SQL 发送到 Azure SQL 队列(其中是一项获取大量“消息”并针对数据库运行 SQL 代码的服务),这样客户端就不必等待太多时间来执行操作。 它变得更快了一点,但仍然需要很长时间(由于对 Azure SQL 队列的请求)。因此,我注意到将该操作放在单独的线程中是有效的,并将所有 SQL 发送到我的 Azure SQL 队列。

不过我还是有点担心。在单独的线程中执行长时间操作真的安全吗?可靠吗?

最佳答案

第二个线程与您习惯使用的主线程 100% 相似。我希望我手头有一些权威答案,但这是一种常见的做法,人们不再写这些......

所以,是的,将工作卸载到第二个线程是安全的,并且可以被大多数人认为是推荐的方法。

编辑 1
好吧,如果你的线程在 IIS 上运行,你需要注册它,否则它就会死掉,因为一旦请求/响应周期完成,它就会杀死它......

关于c# - 在单独的线程中执行长时间操作是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34275146/

相关文章:

multithreading - 使用最大连接上限计算总下载时间

c# - Lambda 将递增的元素添加到列表

sql - 创建以月份范围作为列的 SQL 表并使用表数据填充字段

multithreading - Matlab多线程函数

java - 如何为多线程 Java 服务器实现观察者设计模式?

sql - 在制定 Sql 查询时您是如何思考的?它是一种体验还是一种理念?

c# - 在新选项卡中打开图片,就像右键单击一样 - 在 firefox 中查看图片 (WatiN)

c# - LINQ-SQL 在单个事务中更新多行

c# - 为什么 ToUpper 比 ToLower 快?

c# - 如何在特定 DataTable 行的剩余列中添加值?