この重複エラーがない場合は、ここでキャッチします
try{
//execute you insert in base
}catch(Exception ex){
// If your constraint is not respected, an error is thrown.
console.WriteLine("db error : "+ex.Message);
}
だけど、一時的だ、機能的にはだけど悪い、まともじゃない…
適切なコードを作成するには、スプーラーを作成します。
class Spooler{
public System.Collections.Generic.List<String> RequestList = new System.Collections.Generic.List<String>();
public Spooler(){
// Open you Database
// Start you thread will be verify if a request adding in the collection
SpoolThread = new Thread(new ThreadStart(SpoolerRunner));
SpoolThread.Start();
}
public createRequestDb(String DbRequest){
RequestList.Add(DbRequest);
}
private void SpoolerRunner()
{
while (true)
{
if (RequestList.Count() >= 1){
Foreach (String request in RequestList){
// Here, you want to verify your request, if args already exist
// And add request in Database
}
}
// Verify is request exist in the collection every 30 seconds..
Thread.Sleep(30000);
}
}
}
スプーラを使用する理由
スレッドを呼び出す前にスプーラーを初期化するときに、スレッドごとにスプーラーを呼び出し、要求ごとにコレクションに要求を追加し、スプーラーが次々に処理するという理由だけで...すべての異なるスレッドで同時に...
編集:
このスプーラーはサンプルです。データベースに文字列リクエストを 1 つずつ挿入するため、必要なオブジェクトのコレクションを含むスプーラーを作成し、存在しない場合は db に挿入できます...これは単なるサンプルですスレッド数が多い場合は、順番に処理するのが解決策^^