Ereignisse
Erstellen von KI-Apps und Agents
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Eigenschaft | Wert |
---|---|
Regel-ID | CA2247 |
Titel | Anstelle einer TaskContinuationOptions-Enumeration muss eine TaskCreationOptions-Enumeration als Argument an den TaskCompletionSource-Konstruktor übergeben werden. |
Kategorie | Verwendung |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 9 aktiviert | Als Warnung |
Erstellen eines System.Threading.Tasks.TaskCompletionSource
mit einem System.Threading.Tasks.TaskContinuationOptions-Enumerationswert anstelle eines System.Threading.Tasks.TaskCreationOptions-Enumerationswerts.
Verwenden Sie die System.Object.ReferenceEquals-Methode, um einen oder mehrere Werttypen auf Gleichheit zu testen.
Der TaskCompletionSource-Typ verfügt über einen Konstruktor, der einen System.Threading.Tasks.TaskCreationOptions-Enumeration-Wert akzeptiert, sowie einen weiteren Konstruktor, der eine Object akzeptiert. Wenn Sie versehentlich einen System.Threading.Tasks.TaskContinuationOptions-Enumerationwert anstelle eines System.Threading.Tasks.TaskCreationOptions Enumerationwerts übergeben, führt dies dazu, dass der Object-basierte Konstruktor aufgerufen wird: er wird kompiliert und ausgeführt, wird aber nicht das beabsichtigte Verhalten zeigen.
Um die Verstöße zu beheben, ersetzen Sie den Enumerationswert System.Threading.Tasks.TaskContinuationOptions durch den entsprechenden Enumerationswert System.Threading.Tasks.TaskCreationOptions .
// Violation
var tcs = new TaskCompletionSource<int>(TaskContinuationOptions.RunContinuationsAsynchronously);
// Fixed
var tcs = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
Ein Verstoß gegen diese Regel hebt fast immer einen Fehler im aufrufenden Code hervor, sodass sich der Code nicht so verhält, wie es der Entwickler wollte, d. h. die TaskCompletionSource ignoriert die angegebene Option. Die Warnung kann nur dann sicher unterdrückt werden, wenn der Entwickler tatsächlich eine eingepackte System.Threading.Tasks.TaskContinuationOptions als Objektzustandsargument an die TaskCompletionSource
übergeben wollte.
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA2247
// The code that's violating the rule is on this line.
#pragma warning restore CA2247
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der none
auf fest.
[*.{cs,vb}]
dotnet_diagnostic.CA2247.severity = none
Um diese gesamte Kategorie von Regeln zu deaktivieren, legen Sie den Schweregrad für die Kategorie in der none
auf fest.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
Erstellen von KI-Apps und Agents
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrieren