Область регистрации событий в C # - PullRequest
4 голосов
/ 13 декабря 2011

Может ли быть так, что обработчик событий «завершен» не будет вызван из-за освобождения ресурса GC?

public void StartVideo(WerCamera camera)
    {
        Credential creadential = new Credential() { Email = CurrentUser.Email, Password = CurrentUser.Password, SessionNumber = SessionNumber};
        CommandsClient client = new CommandsClient();
        client.StartVideoCompleted += client_StartVideoCompleted;
        client.StartVideoAsync(int.Parse(camera.Id), creadential, ClientInfo);

        client.CloseAsync();
    }

1 Ответ

2 голосов
/ 13 декабря 2011

Да, это возможно, так как вы теряете все ссылки на клиента после возврата из функции.

client.StartVideoCompleted += client_StartVideoCompleted; заканчивается удержанием ссылки на объект с помощью функции client_StartVideoCompleted, но это не отвечает взаимностью. Вам нужно как-то сохранить ссылку на созданного клиента.

...