在单独的线程中执行长操作安全吗

本文关键字:操作 安全 执行长 单独 线程 | 更新日期: 2023-09-27 18:26:49

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

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

在单独的线程中执行长操作安全吗

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

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

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