我有一个存储更新语句的类.我无法在并行for循环中执行这些语句,因为这会导致死锁.
循环完成后执行语句,在100行的情况下,它可以正常工作.但某些情况会产生超过100,000个语句.在顺序循环上执行这些语句需要太长时间.
我希望实现的是,在向类中添加100个语句后,我在一个单独的线程上执行这些语句,并清除语句变量,以便可以添加和执行下一个100.
我是多线程的新手.这可以实现吗?如果不是我用什么其他选项来减少执行时间.请注意,我无法更改语句逻辑,因为附加了许多其他因素.
让我进一步澄清我的情景.我拥有的这个表更像是一个日志表,它跟踪转移到客户端的sql行,因此我不会重新发送同一个对象两次.这是为了减少带宽使用,因为对象通过互联网链接传输.
一旦我收到客户的回复,我就会执行每个声明.当循环顺序时,这很有效,但事实证明它太慢了.所以我选择使用parallel for循环.这是所有问题出现的地方,因为同一个表几乎同时被选中,插入和更新导致死锁.
所以我决定将语句保存在稍后执行的字符串列表中.
我尝试使用string.join将所有字符串转换为单个字符串,但这给了我系统内存不足的异常.从而逐个顺序执行它们.现在转移需要5分钟,执行需要30分钟.所以我正在寻找解决方案..
我在C#中有一个应用程序,并希望监视其当前状态,即它是运行还是关闭.到目前为止,我能够跟踪应用程序在运行时错误期间退出的状态,或者应用程序退出代码中的任何其他错误.
但是当任务管理器强制关闭时,我无法记录应用程序状态.
有没有办法监控End Process事件?或者我是否必须设计一个单独的服务来监视我的应用程序(我觉得这会浪费资源)?
简史:该应用程序是一个WCF订阅者应用程序,旨在作为后台进程运行并从服务器接收数据.我不想使用Windows服务,因为我正在设计一个GUI,允许客户端向服务器发送请求以获取特定数据.
此应用程序链接到另一个应用程序,该应用程序跟踪订户是否在线或离线.
因此,正在寻找一种方法来跟踪突然的应用程序关闭并相应地通知用户.