Ich entwickle eine WPF-App mit C# und .NET Framework 4.6.1 und SQL Server 2012 SP3 und Entity Framework 6.1.3 Code zuerst.Einen neuen Thread sofort ausführen
Ich brauche einen Thread sofort laufen, aber jetzt ist es nicht unmittelbar mit diesem Code ausführen:
Task.Run(() =>
{
RequestNewCodes();
});
private void RequestNewCodes()
{
log.DebugFormat("Task thread ID: {0} - {1}", Thread.CurrentThread.ManagedThreadId, DateTime.UtcNow.ToString("hh:mm:ss.fff"));
try
{
trazabilidad.InsertNewCodesWeb(1, codesManagerURL);
}
catch (Exception ex)
{
log.Error(string.Format("InsertNewCodesWeb nivel 1: {0}", ex.ToString()));
}
}
Task.Run
Dokumentation sagte:
Queues die angegebene Arbeit auf dem Thread-Pool laufen und gibt ein Task Objekt zurück, das diese Arbeit darstellt.
Aber ich möchte nicht Schlange stehen.
Wie kann ich einen Thread sofort ohne ThreadPool ausführen?
Unmittelbar bedeutet, die Aufgabe in einem Pool nicht zu verschieben und abzuwarten.
Ich verwende keine Verbindungen erneut. Jedes Mal, wenn ich mich mit der Datenbank verbinde, erstelle ich einen neuen DbContext und zerstöre ihn am Ende.
Dies ist keine doppelte Frage. Ich habe alle Antworten auf diese Frage getestet und es funktioniert nicht für mich. Ich habe gefunden, wie man dieses Problem löst, und ich möchte mit Ihnen teilen, aber ich kann nicht, weil diese Frage geschlossen ist.
Durch einen Faden. Aufgaben sind keine Threads. 'neuer Thread(). Start()'. –
Wahrscheinlich läuft es sofort. Wenn nicht, ist Ihr Thread-Pool überlastet. Wie haben Sie festgestellt, wie lange es dauert, bis dieser Code ausgeführt wird? – usr
@usr Weil dieser Code eine Methode ist, die 21 Mal aufgerufen wird. Dieser Code fügt Daten in die Datenbank mit einem Datum ein und ich habe überprüft, dass die Daten 21 Mal eingefügt wurden (es gibt 21 Zeilen in der Datenbank), nachdem alle anderen Prozesse beendet wurden. – VansFannel