Я портировал старый фрагмент неуправляемого кода, который использовал Crypto API, на 100% управляемый код .NET.Код использовал алгоритм DES и должен был поддерживать его по нескольким причинам.
Поскольку экземпляры CryptoAPITransform
, полученные из методов CreateDecryptor и CreateEncryptor, помечены как повторно используемые, я подумал о создании их экземпляра и использованииих всякий раз, когда это необходимо.
Кажется, код работал, но он вызывал утечки памяти, поэтому решил каждый раз создавать и удалять экземпляр.Пока, похоже, он не протекает, но я хотел бы знать, использовал ли я его раньше неправильно, и если да, могу ли я повторно использовать экземпляры.
Приложение является многопоточным, ивыполняет много операций одновременно, поэтому могут возникнуть проблемы с многопоточностью, хотя я не смог найти исключение или поврежденное сообщение.Кроме того, все мои операции были сделаны с помощью вызова TransformFinalBlock
.Это звучит правильно для вас?Тестирование приложения утомительно, но я думаю, что попробую сам, если синхронизация потоков остановит утечку случайно.