|
|
1
8
只要两个线程都没有标记为后台线程,应用程序就会一直运行,直到两个线程都退出。所以,实际上,您需要做的就是让每个线程分别干净地退出。对于写入数据库的线程,这可能意味着耗尽生产者/消费者队列并检查要退出的标志。 here -工人可能只是:
下面是一个基于
|
|
|
2
6
假设“调用中止方法”意味着使用thread.abort中止线程。 Don't do that . 你实际上是在破坏你的应用程序。有很多更干净的方法可以通过显示器来实现这一点。 尽管如此,当你的应用程序崩溃时,你不应该在数据库中获得不一致的数据,这就是为什么你的数据库事务具有 ACID 非常重要的编辑 您说过:出于性能原因,您不使用事务,而是使用互斥锁。这是 在相当多的层面上。首先,事务可以使某些操作更快,例如尝试在表中插入10行,在事务中重试,事务版本会更快。其次,当/如果你的应用程序崩溃,你会损坏你的数据库吗?当应用程序的多个实例正在运行时会发生什么情况?或者在查询分析器中对数据库运行报告时? |
|
|
3
3
您的互斥等待应该包含一个超时。每个线程的外部循环都可以检查“请立即关闭”标志。要关闭,请为每个线程设置“请立即关闭”标志,然后使用“加入”等待每个线程完成。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |