Die von mir erstellte Anwendung funktioniert einwandfrei, aber ich stoße gelegentlich auf ein zufälliges Problem. Dieses Problem tritt nicht regelmäßig, sondern sporadisch auf.
Bei einem der Speichervorgänge wird dieselbe Aktion zweimal in der Datenbanktabelle wiederholt, was manchmal dazu führt, dass doppelte Daten eingegeben werden.< /p>
Wie ich bereits erwähnt habe, ist das Seltsame, dass dieses Problem von Zeit zu Zeit zufällig auftritt.
Hier ist der Code, den ich zum Speichern von Daten verwendet habe Datenbanktabelle:
internal static class Program
{
private static Mutex mutex;
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
bool isNewInstance;
string appName = "MyUniqueApplicationName";
// Create a new mutex with a unique name.
mutex = new Mutex(true, appName, out isNewInstance);
if (!isNewInstance)
{
// If an instance is already running, show an error message and exit.
MessageBox.Show("The application is already running.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmLogin());
// Release the mutex when the application exits.
GC.KeepAlive(mutex);
}
}
Die von mir erstellte Anwendung funktioniert einwandfrei, aber ich stoße gelegentlich auf ein zufälliges Problem. Dieses Problem tritt nicht regelmäßig, sondern sporadisch auf. Bei einem der Speichervorgänge wird dieselbe Aktion zweimal in der Datenbanktabelle wiederholt, was manchmal dazu führt, dass doppelte Daten eingegeben werden.< /p> Wie ich bereits erwähnt habe, ist das Seltsame, dass dieses Problem von Zeit zu Zeit zufällig auftritt. Hier ist der Code, den ich zum Speichern von Daten verwendet habe Datenbanktabelle: [code]private async void btnSave_Click(object sender, EventArgs e) { await ExecuteSaveOperationAsync(); }
private async Task ExecuteSaveOperationAsync() { if (comBoxLocation.Text == "-- Select Location --") { MessageBox.Show("Please select a location first"); return; }
if (!dateTimePicker.Checked) { MessageBox.Show("Select date first"); return; }
using (var db = new TTApplicationEntities()) { using (var transaction = db.Database.BeginTransaction()) { try { var selectedDate = dateTimePicker.Value; var costCenterFromComboBox = (int)comBoxLocation.SelectedValue;
var costCenterDetails = await db.tblCostCenters .SingleOrDefaultAsync(cc => cc.CostCenterId == costCenterFromComboBox);
if (costCenterDetails == null) { MessageBox.Show("Cost Center not found"); return; }
var businessUnitDetails = await db.tblBusinessUnits .SingleOrDefaultAsync(bu => bu.BusinessUnitId == costCenterDetails.BusinessUnitId);
if (businessUnitDetails == null) { MessageBox.Show("Business Unit not found"); return; }
var vatFromDB = await db.tblVATs.FirstOrDefaultAsync(); var vatProducts = (vatFromDB?.VATPercentage ?? 0) * 0.01m + 1;
var productsListWithoutVAT = new List(); var productsListVAT = new List(); var fullTotalProducts = 0m;
var productsWithoutVAT = new List(); var productsVAT = new List();
foreach (DataGridViewRow row in dataGridViewSales.Rows) { if (row.IsNewRow) continue;
var categoryCode = Convert.ToInt32(row.Cells[8].Value); var categoryDetails = await db.tblCategories .SingleOrDefaultAsync(cd => cd.CategoryCode == categoryCode);
this.Close(); } catch (Exception ex) { transaction.Rollback(); MessageBox.Show($"An error occurred: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } [/code] Ich verwende den folgenden Code, um zu verhindern, dass der Benutzer mehrere Instanzen des Programms gleichzeitig ausführt: [code]internal static class Program { private static Mutex mutex;
/// /// The main entry point for the application. /// [STAThread] static void Main() { bool isNewInstance; string appName = "MyUniqueApplicationName";
// Create a new mutex with a unique name. mutex = new Mutex(true, appName, out isNewInstance);
if (!isNewInstance) { // If an instance is already running, show an error message and exit. MessageBox.Show("The application is already running.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
// Release the mutex when the application exits. GC.KeepAlive(mutex); } } [/code] Ich habe verwendet[code]var transaction = db.Database.BeginTransaction() [/code] Ich habe versucht, dieses Problem zu beheben, aber es hat nicht geholfen.
Die von mir erstellte Anwendung funktioniert einwandfrei, aber ich stoße gelegentlich auf ein zufälliges Problem. Dieses Problem tritt nicht regelmäßig, sondern sporadisch auf.
Bei einem der...
Ich verwende C# und Hangfire, um 8.000 SMS -Nachrichten über einen Hintergrundjob zu senden. Wenn ich dies jedoch in einem einzigen Job ausführe, nimmt Heap Memory (GEN2) die Verwendung erheblich zu,...
Ich habe ein Django -Projekt, bei dem ich einige Datenbanktabellen habe. Dies hilft mir, diese Nachrichten aus meinem Django-admin zu erstellen/zu ändern. /> MY_MSGS = {record.name :...
Ich arbeite an der Implementierung eines Aktualisierungs-Token-Mechanismus in einem OkHttp-Interceptor, aber er iteriert ewig, wenn die Token-Aktualisierung erforderlich ist. Das Problem scheint...