1

私は、私たちの部門のコンテストのデバッグにWindowsアプリケーション(c#.netを使用)を作成しました。この多くのユーザーの は、同じデータベースを使用して質問のリストを選択し、それぞれのIDだけでマークを更新します。 それは any1 .. advaceで おかげで私を助けてください...同じデータベースを更新する際にマルチスレッドの概念を使用する必要がありますか?

答えて

3

Mutil-Threadingまたは複数のスレッドを使用すると、複数の操作を行いたいシナリオで使用されている...彼らは、データベース内の自分のマークを更新したときにスレッドの概念を使用する必要がありません同時に1つのタスクを実行したり、同時にいくつかのタスクを実行したりすることができます。あなたのシナリオとシナリオで複数のスレッドを使用する可能性について考える必要があります。 2つの別々のタスクに分けることができ、並列に実行できるタスクがあると思われる場合は、マルチスレッドを使用してパフォーマンスを向上させることができます。同様に、重い時間がかかるタスクがあると思われる場合は、そのタスクをBackground Threadに移動し、メインスレッドを使用して他のタスクを並行して処理できます。それはあなたのシナリオによって異なります。

は、今ではWindowsフォームアプリケーションである場合、最も可能性の高いUIを通じて相互に作用します一度このアプリの唯一の利用者があるでしょう、あなたのシナリオに来ます。この仮定が正しければ、私はあなたがマルチスレッドを必要とするとは思わない。ユーザーが徹底UIいくつかの入力を行っていると、彼はDB内の情報を保存するために最後に保存ボタンをクリックした場合、あなたはマルチスレッド必要はありません、単一のUIスレッドをなし、これは必要ありません。この

0

行うのに十分だろう。各ユーザーはデータベース接続プールからの接続を確立し、それらは同時に動作し、並列プログラミングは必要ありません。

0

異なるスレッドからデータベースを更新すると、データベースが破損することはありません。これは、オブジェクトを保護するためにロックを適用する必要がある通常のC#とは異なります。データベースの更新がより高いレベルで相互に干渉しないようにするには、トランザクションを使用する必要があります。非常に簡単に言えば、複数のテーブルでデータベースを編集する場合や、データベースの変更がデータベースの内容(顧客からの注文の追加など)によって異なる場合、トランザクションによって一貫性が維持されます。 。

0

データベースの操作にUI以外のスレッドを使用する必要があります。それ以外の場合は、UIが応答しなくなる可能性があります。例えば。 UIスレッドから長いクエリを実行する(または接続が中断されたり、データベースが多用されたり、間違っているものが間違っているなど)、完全な応答が受信されるまでUIスレッドはブロックされます。 ACID - あなたは、データベース内の同じデータを更新することができ、複数のユーザーが、持っている状況では

、あなたは正しい制御とデータの流れを確保するために取引を導入する必要があるかもしれません。

関連する問題