我为我们部门的调试竞赛创建了一个 Windows 应用程序(使用 c# .net)。在这许多用户使用相同的数据库来选择问题列表并单独更新他们各自 id 中的标记。当他们在数据库中更新他们的标记时是否需要使用线程概念..请帮助我..提前谢谢...
4 回答
Mutil-Threading
或多个线程用于您想要一次执行多个任务或同时执行某些任务的场景。您应该考虑您的场景以及您的场景中可能使用的多个线程。如果您认为某些任务可以分为两个独立的任务并且它们可以并行运行,那么您可以使用多线程来提高性能。同样,如果您认为某些任务很重且需要大量时间,您可以将该任务移至Background Thread
并使用主线程并行处理其他一些任务。这完全取决于您的情况。
现在来到您的场景,如果它是一个 Windows 窗体应用程序,很可能一次只有一个该应用程序的用户将通过 UI 进行交互。如果这个假设是正确的,我认为你将需要多线程。如果用户正在通过 UI 进行一些输入,并且他在最后单击保存按钮以将信息保存在 DB 中,则您不需要多线程,单个 UI 线程就足以做到这一点
不,这不是必需的。每个用户都会从数据库连接池中使用一个连接,这些连接是并发工作的,不需要并行编程。
如果您从不同的线程更新数据库,它不会损坏。这与常规 C# 不同,在 C# 中您需要应用锁来保护您的对象。您可能需要使用事务来确保您的数据库更新不会在更高级别上相互干扰。非常简单地说,如果您在多个表中编辑数据库,或者如果您的数据库更改取决于数据库内容(例如添加来自客户的订单),事务会确保您的数据库保持一致,事务会阻止您为已删除的客户添加订单.
您需要使用非 UI 线程进行任何数据库交互,否则 UI 可能会变得无响应。例如,如果您从 UI 线程执行长查询(或者您的连接被中断,或者数据库被大量使用或其他任何可能出错的东西 - 都会出错),UI 线程将被阻塞,直到收到完整的响应。
在您有多个用户的情况下,可能会更新数据库中的相同数据,您可能需要引入事务以确保正确的控制和数据流 - ACID。