Оқиға
AI бағдарламалары мен агенттерін құру
Mar 17, 9 PM - Mar 21, 10 AM
Нақты пайдалану жағдайлары негізінде масштабты ИСК шешімдерін құру үшін стипендиаттармен және сарапшылармен кездесу сериясына қосылыңыз.
Қазір тіркелуБұл браузерге бұдан былай қолдау көрсетілмейді.
Соңғы мүмкіндіктерді, қауіпсіздік жаңартуларын және техникалық қолдауды пайдалану үшін Microsoft Edge браузеріне жаңартыңыз.
Свойство | Значение |
---|---|
Идентификатор правила | CA2247 |
Заголовок | аргумент, переданный в конструктор TaskCompletionSource, должен быть перечислением TaskCreationOptions, а не TaskContinuationOptions |
Категория | Использование |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | Как предупреждение |
Создание System.Threading.Tasks.TaskCompletionSource
со значением перечисления System.Threading.Tasks.TaskContinuationOptions, а не System.Threading.Tasks.TaskCreationOptions.
Использование метода System.Object.ReferenceEquals для проверки одного или нескольких типов значений на равенство.
Тип TaskCompletionSource имеет конструктор, принимающий значение перечисления System.Threading.Tasks.TaskCreationOptions, и другой конструктор, принимающий Object. Случайная передача значения перечисления System.Threading.Tasks.TaskContinuationOptions вместо значения перечисления System.Threading.Tasks.TaskCreationOptions приведет к вызову конструктора на основе Object: он будет компилироваться и выполняться, но его поведение будет отличаться от ожидаемого.
Чтобы устранить нарушение, замените значение перечисления System.Threading.Tasks.TaskContinuationOptions соответствующим значением перечисления System.Threading.Tasks.TaskCreationOptions.
// Violation
var tcs = new TaskCompletionSource<int>(TaskContinuationOptions.RunContinuationsAsynchronously);
// Fixed
var tcs = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
Нарушение этого правила почти всегда означает ошибку в вызывающем коде, поэтому код не будет работать так, как ожидалось, поскольку TaskCompletionSource пропускает указанный параметр. Единственное время, когда предупреждение безопасно подавлять, заключается в том, что разработчик фактически намеревается передать в System.Threading.Tasks.TaskContinuationOptions качестве аргумента состояния объекта аргументу состояния объекта TaskCompletionSource
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA2247
// The code that's violating the rule is on this line.
#pragma warning restore CA2247
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA2247.severity = none
Чтобы отключить эту всю категорию правил, задайте уровень серьезности для категории none
в файле конфигурации.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none
Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".
.NET кері байланысы
.NET — бастапқы коды ашық жоба. Пікір қалдыру үшін сілтемені таңдаңыз:
Оқиға
AI бағдарламалары мен агенттерін құру
Mar 17, 9 PM - Mar 21, 10 AM
Нақты пайдалану жағдайлары негізінде масштабты ИСК шешімдерін құру үшін стипендиаттармен және сарапшылармен кездесу сериясына қосылыңыз.
Қазір тіркелу