我正在处理一个正在客户端导入的 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/