У меня есть следующий код:
public void UnPublishDatabases(IReadOnlyCollection<IPublishedDatabase> sqlDatabases)
{
var listener = new UnpublishDatabaseListener();
listener.DatabaseUnpublished += db =>
{
OnDatabaseUnpublished(db);
listener.DatabaseUnpublished -= OnDatabaseUnpublished;
};
_publishController.Unpublish(sqlDatabases, listener);
//...
}
И диагностический процессор выдает мне следующее предупреждение:
Event 'listener.DatabaseUnpublished' should not be subscribed with the same 'listener.DatabaseUnpublished' object.
Поэтому я пытаюсь понять, что здесь не так.И попробуйте найти, как изменить код.
Вероятно, это решает предупреждение:
public void UnPublishDatabases(IReadOnlyCollection<IPublishedDatabase> sqlDatabases)
{
var listener = new UnpublishDatabaseListener();
//save ref
var listenerCopy = listener;
listener.DatabaseUnpublished += db =>
{
OnDatabaseUnpublished(db);
//use it
listenerCopy.DatabaseUnpublished -= OnDatabaseUnpublished;
};
_publishController.Unpublish(sqlDatabases, listener);
//...
}
Также у меня есть вопрос - мне действительно нужно отписаться здесь?Потому что слушатель - это просто локальный объект.
UPD:
public class UnpublishDatabaseListener
{
public event Action<IPublishedDatabase> DatabaseUnpublished;
//...
}